编写程序,假设抽象类 Shape 定义了 area()方法,其子类 Circle、Rectangle 和 Triangle 都各自实现了 area()方法。定义一个类 PolymorphismDemo 实现计算圆形,矩形,和三角形 面积之和
时间: 2024-02-18 14:01:49 浏览: 84
编写一个抽象类Shape
4星 · 用户满意度95%
好的,以下是Java代码实现:
Shape.java
```java
// 定义抽象类 Shape
public abstract class Shape {
// 定义抽象方法 area()
public abstract double area();
}
```
Circle.java
```java
// 定义圆形类 Circle,继承自 Shape
public class Circle extends Shape {
private double radius; // 圆的半径
public Circle(double radius) {
this.radius = radius;
}
@Override
public double area() {
return Math.PI * radius * radius;
}
}
```
Rectangle.java
```java
// 定义矩形类 Rectangle,继承自 Shape
public class Rectangle extends Shape {
private double width; // 矩形的宽
private double height; // 矩形的高
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double area() {
return width * height;
}
}
```
Triangle.java
```java
// 定义三角形类 Triangle,继承自 Shape
public class Triangle extends Shape {
private double base; // 三角形底边长
private double height; // 三角形高
public Triangle(double base, double height) {
this.base = base;
this.height = height;
}
@Override
public double area() {
return base * height / 2;
}
}
```
PolymorphismDemo.java
```java
public class PolymorphismDemo {
public static void main(String[] args) {
// 创建一个 Shape 类型的数组
Shape[] shapes = new Shape[3];
shapes[0] = new Circle(2);
shapes[1] = new Rectangle(3, 4);
shapes[2] = new Triangle(2, 3);
// 计算面积之和
double sum = 0;
for (int i = 0; i < shapes.length; i++) {
sum += shapes[i].area();
}
System.out.println("面积之和为:" + sum);
}
}
```
运行结果为:
```
面积之和为:19.84955592153876
```
注意:在 PolymorphismDemo 类中,我们定义了一个 Shape 类型的数组,这个数组可以存放 Circle、Rectangle 和 Triangle 的对象。然后我们遍历这个数组,分别调用每个对象的 area() 方法来计算面积,并将计算结果累加到变量 sum 中,最后输出 sum 的值。由于三个子类都继承自 Shape 类,所以它们都可以被赋值给 Shape 类型的变量,这就是多态的体现。
阅读全文