2017-02-18 5 views
-1
TwoDShape shapes[] = new TwoDShape[2]; 
shapes[0] = new Triangle("outlined",8.0,12.0); 
shapes[1] = new Rectangle(10); 

Существует суперкласс, который TwoDShape и есть подклассы этого. (Треугольник, прямоугольник против) Я хорошо понимаю, что суперкласс ссылка может указывать на подклассы object.Yet, я не мог понять, что происходит в вышеприведенном. Мы создали объект, который является shapes? Я знаю, массивы - это объекты. (Я не уверен, насколько это актуально или нет.) Не могли бы вы объяснить логику этих утверждений?Понимание массива объектов

+1

создать массив объектов 'TwoDShape', а затем хранить объекты в нем - то есть all – mic4ael

+1

'shapes [0]' относится к отдельному _entry_ в массиве, который является объектом «TwoDShape». –

+0

Нет никакой реальной разницы между кодом, который у вас здесь, и 'TwoDShape shapes0 = new Triangle (...); TwoDShape shapes1 = новый Rectangle (...); 'в терминах типов и назначений. –

ответ

2

Массивы - это объекты. Вы создали объект массива.

Массив может содержать ссылки на другие объекты его типа. И когда вы назначаете отдельные элементы массива, подобные этому,

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

Объекты присваиваются выделенному индексу в массиве. Это возможно, потому что ссылка Super Тип может содержать объект Sub Тип.

Адрес brief tutorial on Arrays.


Надеюсь, что это поможет!

1

TwoDShape - это суперкласс, это ясно. Теперь еще один треугольник и прямоугольник - это реализация класса TwoDShape.

Вот почему мы можем это сделать.

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); 
    } 
} 

Так Треугольник и прямоугольник класс проходят от класса TwoDShape, для этого при создании массива типа А TwoDShape shapes[] = new TwoDShape[5];, Таким образом, вы можете использовать оба объекта Triangle и Triangle в вашем массиве.

1

В этом заявлении TwoDShape shapes[] = new TwoDShape[5]; Вы говорите, что создайте пустой массив элементов 5 элементов для объектов TwoDShape.

Тогда этот код:

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

Это дает указание тому месту экземпляру объектов TwoDShape (В этом случае, может быть TwoDShape, треугольник и прямоугольник) в массив.

0

Вы создали массив с именами форм, который имеет тип TwoDShape. Поэтому он может хранить данные типаTwoDShape.

Затем сохраненные объекты супертипаTwoDShape в массиве, учитывая, что Triangle и Rectangleунаследуют из класса TwoDShape

Смежные вопросы