将继承类的计算值传递给主类

  • 本文关键字:值传 计算 继承 java
  • 更新时间 :
  • 英文 :


在main函数中,我创建了一个名为Figure的类

Circle和Rectangle扩展了类Figure。Square扩展了类Rectangle。

现在我必须从创建的对象中打印值。我想我的思路是错误的。如何将其他类创建的值传递给print函数?

public class Figure { 
private double area;
private double perimeter;
private String name;
public Figure() { 
this.area = 0.0;
this.perimeter = 0.0;
this.name = "";
}
public void print() {
System.out.println(this.area + this.perimeter + this.name);
}
public static void main(String args[]) {
Figure[] figureList = new Figure[5];
figureList[0] = new Circle(5);
figureList[1] = new Square(5);
figureList[2] = new Rectangle(5, 9);
for(int i=0;i<3;i++) {
System.out.println(figureList[i].print()); // wont print anything
}
}
}
public class Circle extends Figure {
private double radius;

public Circle(double a) {
this.radius= a;
this.calcPerimeter();
this.calcArea();
}
public double calcPerimeter(){
return 2*(Math.PI*this.radius);
}
public double calcArea(){
return Math.PI*(this.radius*this.radius);
}
public void increase(int a){
this.radius*=a;
this.calcArea();
}

}

我应该不使用return在calcPerimeter和calcArea方法?因为我需要把这个传递给Figure类。对于矩形,我也有相同的设置。

这个类扩展了矩形。

public class Square extends Rectangle {
private double sideA;
public Square(double a) {
this.sideA = a;
this.calcPerimeter();
this.calcArea();
}
public double calcArea() {
return (this.sideA*this.sideA);
}
public double calcPerimeter() {
return 4*this.sideA;
}
}

有人能告诉我如何正确地做吗,我刚刚开始我的Java之旅,我正在练习对象。

首先,您已经将Figure类的所有3个成员设置为private,因此,如果您希望基类更新它们,则将它们设置为protected,并使用super.area, super.perimeter,等来更新它们。

是的,你不需要return,但使用super关键字更新父值。