在子类#Solved中重写父类的原始方法后,再访问它

时间:2019-12-19 09:32:49

标签: java

编辑:起床后我仍然很困,只是没有注意我如何在主类中调用方法。一切正常,谢谢

我有一个带有getArea方法的Circle类

public class Circle {
    private double radius;

   public Circle(double radius){
       radius = (( radius < 0 )) ? 0 : radius;
       this.radius=radius;
   }

    public double getRadius() {
        return radius;
    }

    public double getArea() {
       return (radius*radius*Math.PI);
    }
}

此外,我还有一个Cylinder类。

在Cylinder类中,我想重写getArea方法,同时仍能够访问Circle类的getArea方法以计算体积。

public class Cylinder extends Circle{
    private double height;

    public Cylinder(double radius, double height){
        super(radius);
        height = (( height < 0 )) ? 0 : height;
        this.height=height;
    }

    public double getHeight() {
        return height;
    }

    public double getVolume() {
        return (super.getArea()*height);
    }

    @Override
    public double getArea() {
        return (2*Math.PI*getRadius()*height);
    }
}

预期结果:

由于“超级”。在getVolume方法内的getArea方法之前,getVolume方法将调用原始的getArea方法(好像我没有覆盖它一样)

实际结果:

是否有“超级”无关紧要。在是否使用getArea方法之前,总是会调用覆盖的方法,从而导致错误的体积计算。

是否有方法可以在覆盖getArea方法的未覆盖版本之后调用它?

0 个答案:

没有答案