在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关键字更新父值。