.定义一个接口: Shape,里面有两个方法,分别是求面积和周长。定义两个类:矩形Rectangle、圆Circle,实现该接口。(30分) 定义一个测试类,利用基于接口的多态实现: (1)传入圆的半
时间: 2024-10-12 16:13:36 浏览: 31
Java:使用抽象类定义一个“形状类”,能够计算周长和面积。
首先,我们定义一个名为 `Shape` 的接口,它包含两个方法:`getArea()` 和 `getCircumference()`,这两个方法分别用于计算形状的面积和周长:
```java
public interface Shape {
double getArea();
double getCircumference();
}
```
接下来,我们创建两个实现了 `Shape` 接口的具体类:`Rectangle` 和 `Circle`。
```java
public class Rectangle implements Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
@Override
public double getCircumference() {
return 2 * (width + height);
}
}
public class Circle implements Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getCircumference() {
return 2 * Math.PI * radius;
}
}
```
然后,我们可以创建一个测试类 `TestShape` 来演示基于接口的多态:
```java
public class TestShape {
public static void main(String[] args) {
// 创建一个圆形实例并传递给需要Shape类型的变量
Shape circle = new Circle(5.0);
// 计算并打印面积和周长,因为circle实现了Shape接口,所以可以在这里统一处理
System.out.println("Circle area: " + circle.getArea());
System.out.println("Circle circumference: " + circle.getCircumference());
// 同样,创建一个矩形实例并操作
Shape rectangle = new Rectangle(4.0, 6.0);
System.out.println("\nRectangle area: " + rectangle.getArea());
System.out.println("Rectangle circumference: " + rectangle.getCircumference());
}
}
```
在这个例子中,`TestShape` 类通过 `Shape` 接口引用了不同类型的对象(`Circle` 和 `Rectangle`),体现了多态的优势。你可以随意替换 `circle` 或 `rectangle` 变量的实例,程序会根据实际的对象类型自动调用相应的 `getArea` 和 `getCircumference` 方法。
阅读全文