编辑:起床后我仍然很困,只是没有注意我如何在主类中调用方法。一切正常,谢谢
我有一个带有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方法的未覆盖版本之后调用它?