Какой тип должен хранить массив при использовании композиции вместо наследования?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Какой тип должен хранить массив при использовании композиции вместо наследования?

Сообщение Anonymous »


При использовании наследования вы можете создать два класса A и B, которые наследуются от класса C. Затем вы можете создать массив C для хранения любого из них — C[].

Однако при использовании композиции какой тип должен быть у массива для хранения любого из этих типов?

класс Entity { общедоступный внутренний идентификатор; общественная сущность () { this.id = 0; } } класс Player расширяет Entity { общественный игрок () { this.id = 1; } } класс Monster расширяет Entity { общественный монстр() { this.id = 2; } } общественный класс Main { public static void main(String[] args) { Сущность [] сущности = новая сущность [2]; сущности [0] = новый игрок (); // идентификатор == 1 сущности[1] = новый Монстр(); // идентификатор == 2 } } При использовании композиции вам придется хранить Entity как поле:
класс Entity { общедоступный внутренний идентификатор; общественная сущность () { this.id = 0; } } класс Игрок { Сущность; общественный игрок () { this.entity = новая сущность(); this.entity.id = 1; } } класс Монстр { Сущность; общественный монстр() { this.entity = новая сущность(); this.entity.id = 2; } } общественный класс Main { public static void main(String[] args) { Игрок игрок = новый игрок(); Монстр-монстр = новый Монстр(); Сущность [] сущности = новая сущность [2]; // TODO: не сработает! какой тип? сущности[0] = игрок; сущности[1] = монстр; } }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»