设计一个shape类作为父类,设计Circle类表示圆形,Rect类表示矩形,均作为shape的子类,要求父类包含一个计算面积的方法,子类中设计重写的计算面积方法以及各自需要的成员变量另起一个类进行相关测试
时间: 2024-12-11 15:39:58 浏览: 15
首先,我们创建一个名为`Shape`的抽象父类,它有一个抽象方法`calculateArea()`用于计算形状的面积:
```java
public abstract class Shape {
protected double area;
public Shape(double area) {
this.area = area;
}
// 抽象方法,子类需要实现
public abstract double calculateArea();
// 父类提供通用的行为
public void printArea() {
System.out.println("Shape area: " + area);
}
}
```
接着,我们分别定义`Circle`和`Rect`两个子类,它们都从`Shape`类继承并实现了`calculateArea()`方法:
```java
import java.util.Random;
class Circle extends Shape {
private double radius;
public Circle(double radius) {
super(Math.PI * radius * radius);
this.radius = radius;
}
@Override
public double calculateArea() {
return Math.PI * radius * radius;
}
}
class Rect extends Shape {
private double width, height;
public Rect(double width, double height) {
super(width * height);
this.width = width;
this.height = height;
}
@Override
public double calculateArea() {
return width * height;
}
}
```
为了进行相关的测试,我们可以创建一个专门的测试类`ShapeTest`:
```java
public class ShapeTest {
public static void main(String[] args) {
Random random = new Random();
// 创建圆和矩形的对象
Shape circle = new Circle(random.nextDouble() * 10);
Shape rect = new Rect(random.nextDouble() * 10, random.nextDouble() * 10);
// 计算并打印面积
circle.printArea();
System.out.println("Circle area: " + circle.calculateArea());
rect.printArea();
System.out.println("Rect area: " + rect.calculateArea());
}
}
```
在这个例子中,`ShapeTest`类通过实例化`Circle`和`Rect`对象,并调用各自的`printArea()`和`calculateArea()`方法,展示了多态性和子类重写父类方法的功能。
阅读全文