使用toString覆盖和继承打印arraylist?

时间:2014-10-07 14:46:20

标签: java inheritance arraylist override tostring

背景信息:我有一个类椭圆,它继承了Shape类的颜色和继承自椭圆类的圆类。

在圆和椭圆中,我必须覆盖toString方法并连接一个显示“Circle”或Ellipse以及形状的面积,周长和颜色的字符串。

在我的主文件中,我现在需要打印整个形状的arraylist“调用每个存储对象的toString方法。”

我不知道怎么告诉它在圆圈时调用toString圆圈,在椭圆时调用toString圆角。

@Override 
public String toString()
{
    return "Ellipse" + " " + super.getColor() + " "+ this.calcArea() + " " + this.calcPerimeter();
}

这是我的椭圆toString重写方法。

1 个答案:

答案 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