设计两个类A、B,在类A的主方法main里创建一个类B的匿名内部类对象,覆盖B中的方法f,并调用此方法。 定义一个图形接口,包含计算图形的面积和周长方法。 定义一个圆类和长方形类分别实现图形接口的方法。并写一测试类进行测试。
时间: 2024-02-13 08:02:09 浏览: 99
好的,我来解答您的问题。
首先,这是两个问题,我先回答第一个问题:
以下是类A和类B的代码:
```java
public class A {
public static void main(String[] args) {
B b = new B() {
@Override
public void f() {
System.out.println("匿名内部类覆盖了B中的方法f");
}
};
b.f(); // 调用匿名内部类的方法
}
}
class B {
public void f() {
System.out.println("B中的方法f");
}
}
```
在类A的main方法中创建了一个类B的匿名内部类对象,并覆盖了B中的方法f,最后调用了匿名内部类的方法。
接下来是第二个问题:
以下是图形接口和圆、长方形类的代码:
```java
interface Shape {
double getArea(); // 计算面积
double getPerimeter(); // 计算周长
}
class Circle implements Shape {
double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
}
class Rectangle implements Shape {
double width;
double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
@Override
public double getPerimeter() {
return 2 * (width + height);
}
}
```
在图形接口中定义了计算面积和周长的方法,圆和长方形类实现了这个接口并重写了这两个方法。
最后是测试类的代码:
```java
public class TestShape {
public static void main(String[] args) {
Circle circle = new Circle(5);
System.out.println("圆的面积为:" + circle.getArea());
System.out.println("圆的周长为:" + circle.getPerimeter());
Rectangle rectangle = new Rectangle(3, 4);
System.out.println("长方形的面积为:" + rectangle.getArea());
System.out.println("长方形的周长为:" + rectangle.getPerimeter());
}
}
```
在测试类中创建了一个圆和一个长方形对象,并分别调用了它们的计算面积和周长的方法进行测试。
希望我的回答能够帮到您!
阅读全文