设计一个Shape类作为父类,设计Circle类表示圆形,Rect类表示矩形,均作为Shape的子类 要求父类包含一个计算面积的方法,子类中设计重写的计算面积方法以及各自需要的成员变量 另起一个类进行相关测试,全代码
时间: 2024-12-11 15:30:21 浏览: 17
首先,我们定义一个`Shape`类作为父类,它有一个通用的`calculateArea()`方法,这个方法默认返回0。然后分别创建`Circle`和`Rect`两个子类,它们继承自`Shape`,并重写`calculateArea()`方法以计算各自的面积。
```java
// Shape类
public abstract class Shape {
protected double size; // 父类的成员变量
public Shape(double size) {
this.size = size;
}
// 父类的抽象方法
public abstract double calculateArea();
// 测试方法,展示如何使用
public void printArea() {
System.out.println("Area of " + getClass().getSimpleName() + ": " + calculateArea());
}
}
// Circle子类
public class Circle extends Shape {
private double radius;
public Circle(double radius) {
super(radius);
this.radius = radius;
}
@Override
public double calculateArea() {
return Math.PI * radius * radius;
}
}
// Rect子类
public class Rect extends Shape {
private double width;
private double height;
public Rect(double width, double height) {
super(width * height); // 使用长乘宽代替直接设置size,因为矩形面积=长*宽
this.width = width;
this.height = height;
}
@Override
public double calculateArea() {
return width * height;
}
}
// Test类
public class Main {
public static void main(String[] args) {
// 创建并测试Circle对象
Circle circle = new Circle(5);
circle.printArea();
// 创建并测试Rect对象
Rect rect = new Rect(4, 6);
rect.printArea();
// 也可以创建Shape类型的引用并动态赋值
Shape shape1 = circle;
shape1.printArea(); // 输出Circle的面积
Shape shape2 = rect;
shape2.printArea(); // 输出Rect的面积
}
}
```
阅读全文