Java,派生定义一个抽象类shape,派生出圆,三角形,由圆派生圆锥体,求体积

定义一个抽象类shape,派生出圆,三角形,由圆派生圆锥体,求体积

public abstract class Shape {
    // 二维度图形具备求面积
    public abstract double getArea();
}

class Circle extends Shape {

    // 圆半径
    private double r;
    private double area;

    public Circle(double r) {
        this.r = r;
        calculateArea();
    }

    private void calculateArea() {
        this.area = new BigDecimal(Math.PI * r)
                .setScale(2, RoundingMode.HALF_UP).doubleValue();
    }

    public double getR() {
        return r;
    }

    public void setR(double r) {
        this.r = r;
        calculateArea();
    }

    @Override
    public double getArea() {
        return this.area;
    }
}

// 圆锥体
class Cone extends Circle {
    
    // 高度
    private double h;
    // 体积
    private double volume;

    public Cone(double r, double h) {
        super(r);
        this.h = h;
        calcVolume();
    }

    private void calcVolume() {
        this.volume = new BigDecimal(this.getArea() * this.h)
                .setScale(2, RoundingMode.HALF_UP).doubleValue();
    }
    
    public double getH() {
        return h;
    }

    public void setH(double h) {
        this.h = h;
        calcVolume();
    }

    public double getVolume() {
        return volume;
    }
}