
题目既详细又简单,按照要求写就行。因为是函数题,我们主函数都不需要写只需要把类方法写好就行
首先是定义shape类作为父类并且提供计算周长和面积的函数
这里因为没有具体图形我们只需要定义方法就可以,后续子类调用面积和周长方法在子类重写就行,符合抽象类的定义(具体方法不用书写,直接在子类重写)
abstract class Shape {
abstract double getPerimeter();
abstract double getArea();
}
然后就是子类的继承
class Square extends Shape {
double len;
public Square(double len) {
this.len = len;
}
public double getPerimeter() {
return 4 * this.len;
}
public double getArea() {
return this.len * this.len;
}
}
定义正方形square类继承shape类,正方形有新的属性length(类型为double),构造方法传参,然后就是子类重写父类的getPerimeter和getArea方法
同样的方式我们写长方形子类继承正方形,继承了正方形的属性引用的话需要用super()
class Rectangle extends Square {
double broad;
public Rectangle(double len, double broad) {
super(len);
this.broad = broad;
}
public double getPerimeter() {
return 2 * this.len + 2 * this.broad;
}
public double getArea() {
return this.len * this.broad; }
}
首先就是继承然后增加一个属性,有参构造把全部变量放进去调用,继承自父类的变量就用super调用,然后子类重写方法
圆类也一样,而且更简单

class Circle extends Shape {
double r;
public Circle(double r) {
this.r = r;
}
public double getPerimeter() {
return 2 * Math.PI * r;
}
public double getArea() {
return Math.PI * this.r * this.r;
}
}