理解对象数组

时间:2017-02-18 10:31:11

标签: java

TwoDShape shapes[] = new TwoDShape[2];
shapes[0] = new Triangle("outlined",8.0,12.0);
shapes[1] = new Rectangle(10);

有一个超类,它是TwoDShape并且有它的子类。(Triangle,Rectangle vs.)我很清楚超类引用可以引用子类object.Yet,我无法理解发生了什么在上面。我们创建了一个shapes的对象吗?我知道,数组是对象。(我不确定它是否相关......)你能解释一下这些语句的逻辑吗?

5 个答案:

答案 0 :(得分:2)

数组是对象。您创建了一个数组对象。

该数组可以保存对其类型的其他对象的引用。当你像这样分配数组的各个元素时,

shapes[0] = new Triangle("outlined",8.0,12.0);
shapes[1] = new Rectangle(10);

将对象分配给数组中已分配的索引。这是可能的,因为 Super Type的引用可以包含 Sub Type的对象。

这是brief tutorial on Arrays

希望这有帮助!

答案 1 :(得分:1)

TwoDShape 是一个很清楚的超类。现在另一个Triangle和Rectangle是TwoDShape类的实现。

这就是我们能做到这一点的原因。

答案 2 :(得分:1)

你有类似的类设计,如下所示:

class TwoDShape {
}

class Triangle extends TwoDShape {

    private String s;
    private double s2;
    private double s3;

    public Triangle(String s, double s2, double s3) {
        this.s = s;
        this.s2 = s2;
        this.s3 = s3;
    }
    //getters and setter
}

class Rectangle extends TwoDShape {

    private int s;

    public Rectangle(int s) {
        this.s = s;
    }
    //getters and setter
}

public class Main {

    public static void main(String[] args) {
        TwoDShape shapes[] = new TwoDShape[5];
        shapes[0] = new Triangle("outlined", 8.0, 12.0);
        shapes[1] = new Rectangle(10);
    }
}

所以Triangle和Rectangle类从TwoDShape类扩展,当你创建一个A TwoDShape shapes[] = new TwoDShape[5];类型的数组时,你可以在你的TriangleTriangle中使用它们。阵列。

答案 3 :(得分:1)

在此声明中TwoDShape shapes[] = new TwoDShape[5];您要说的是请为TwoDShape对象创建一个空的5项占位符数组。

然后这个代码:

shapes[0] = new Triangle("outlined",8.0,12.0);
shapes[1] = new Rectangle(10);

它指示将一个TwoDShape对象的实例(在本例中,可以是TwoDShape,Triangle和Rectangle)放置到数组中。

答案 4 :(得分:0)

您创建了一个名为shapes的数组,其类型为TwoDShape。因此,它可以存储类型 TwoDShape的数据。

然后,在TwoDShapeTriangle 继承的情况下,您将超级 类型 Rectangle的对象存储在数组中/ strong>来自班级TwoDShape