背景信息:我有一个类椭圆,它继承了Shape类的颜色和继承自椭圆类的圆类。
在圆和椭圆中,我必须覆盖toString方法并连接一个显示“Circle”或Ellipse以及形状的面积,周长和颜色的字符串。
在我的主文件中,我现在需要打印整个形状的arraylist“调用每个存储对象的toString方法。”
我不知道怎么告诉它在圆圈时调用toString圆圈,在椭圆时调用toString圆角。
@Override
public String toString()
{
return "Ellipse" + " " + super.getColor() + " "+ this.calcArea() + " " + this.calcPerimeter();
}
这是我的椭圆toString重写方法。
答案 0 :(得分:1)
多态性是你的朋友。动态绑定将为您执行此操作,如果对象为circle类型,则将调用circle toString。如果对象是椭圆类型,则将调用椭圆toString。
换句话说
public Class Shape {
@Override
public String toString()
{
return "Shape";
}
}
public Class Circle extends Shape {
@Override
public String toString()
{
return "Circle";
}
}
public Class Ellipse extends Circle {
@Override
public String toString()
{
return "Ellipse";
}
}
// This is in main
Shape s1 = new Shape();
Shape s2 = new Circle();
Shape s3 = new Ellipse();
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
将打印
Shape
Circle
Ellipse