父类的getarea可以返回子类的面积吗
时间: 2023-10-02 07:13:06 浏览: 35
在 Java 中,如果一个父类中的方法返回类型是某个类或接口类型,那么子类可以重写该方法并返回其子类类型的对象。因此,如果父类中定义了一个 getArea 方法返回某种形状的面积,而子类继承了该方法并计算了自己形状的面积,那么子类可以重写该方法并返回自己的面积。
以下是一个示例代码:
```java
class Shape {
public double getArea() {
return 0.0;
}
}
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public 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
public double getArea() {
return width * height;
}
}
class Main {
public static void main(String[] args) {
Shape shape1 = new Circle(2.0);
Shape shape2 = new Rectangle(3.0, 4.0);
System.out.println(shape1.getArea()); // 输出 12.566370614359172
System.out.println(shape2.getArea()); // 输出 12.0
}
}
```
在上面的示例代码中,定义了一个 Shape 父类和两个子类 Circle 和 Rectangle。Shape 类中定义了一个 getArea 方法,返回 0.0,表示默认情况下形状的面积为 0。Circle 类和 Rectangle 类都继承了 Shape 类,并重写了 getArea 方法,分别计算了自己的面积。在主函数中,创建了一个 Circle 对象和一个 Rectangle 对象,并将其分别赋给 Shape 类型的变量 shape1 和 shape2。然后调用了 shape1 和 shape2 的 getArea 方法,由于 shape1 和 shape2 分别是 Circle 和 Rectangle 类型的对象,因此调用的是各自的 getArea 方法,分别输出 12.566370614359172 和 12.0,表示圆的面积和矩形的面积。