2.在Shape 类基础上设计圆形、矩形子类,要求根据实际形状重写getArea()方法,并设计一个TestShape 类,通过调用countArea方法把两个对象面积累加到area中,最后输出area JAVA
时间: 2024-11-03 19:23:14 浏览: 19
在Java中,你可以按照以下步骤设计这个场景:
首先,我们创建一个名为`Shape`的抽象基类,作为所有形状的共同特征:
```java
abstract class Shape {
abstract double getArea();
}
```
然后,我们可以创建两个具体的子类,如`Circle`和`Rectangle`,它们分别继承自`Shape`并重写`getArea()`方法:
```java
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
double getArea() {
return Math.PI * radius * radius;
}
}
class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
double getArea() {
return width * height;
}
}
```
接下来,我们创建`TestShape`类,它有一个列表来存储`Shape`对象,并有`countArea`方法计算总面积:
```java
public class TestShape {
private List<Shape> shapes = new ArrayList<>();
public void addShape(Shape shape) {
shapes.add(shape);
}
public double countArea() {
double area = 0;
for (Shape s : shapes) {
area += s.getArea();
}
return area;
}
// 主函数,用于测试
public static void main(String[] args) {
TestShape test = new TestShape();
test.addShape(new Circle(5));
test.addShape(new Rectangle(4, 6));
System.out.println("Total area: " + test.countArea());
}
}
```
当运行`main`函数时,会先创建一个`Circle`和一个`Rectangle`对象,添加到`TestShape`中,然后计算并输出它们的总面积。
阅读全文