Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Java (https://forum.zone-game.info/forumdisplay.php?f=126)
-   -   Java(Композиция,Наследование,Делегирование) (https://forum.zone-game.info/showthread.php?t=15672)

Extez1 27.08.2011 16:01

Java(Композиция,Наследование,Делегирование)
 
Вопрос такой в каких случаях, что лучше применять. И чем отличается Делегирование от Композиции и Наследования? Я понял из книжки, что Композиция - это создание экземпляра класса, т.е. использование кода другого класса, а не его структуры. Наследование это использование кода базового класса, т.е. фактически создается объект базового класса внутри производного.

кто поможет нубу понять?):_smile_:

Azagthtot 27.08.2011 17:18

Re: Java(Композиция,Наследование,Делегирование)
 
:facepalm:
Вы совершенно не верно поняли.
Код:

class A { }
class B extends A {}
B b = new B();

не значит, что будет создан объект класса А "внутри" B. Будет создан ОДИН объект класса B, так же обладающий всеми свойствами (поля и методы) класса A.
Создание внутри - называется делегированием вот пример
Код:

class A {
 public void methodA() {
 }
}
class B {
 private A _a = new A();
 public void methodA() {
  _a.methodA();
 }
}
B b = new B(); // Будет создано 2 обхекта , один класса A второй класса B


Extez1 27.08.2011 17:50

Re: Java(Композиция,Наследование,Делегирование)
 
Спасибо за помощь.

Azagthtot 27.08.2011 17:57

Re: Java(Композиция,Наследование,Делегирование)
 
Как ни странно, наследование, виртуальные методы и прочее проще понимать "в картинках" чем в коде. Ну или на крайняк Delphi/C++ код + смотреть в ассемблере реализацию. Становится понятно, как это все, блин, работает :)
А для 100% закрепления материала хорошо еще реализовывать методы ООП на Pure C. Как ни странно, это очень реально, хотя через попу.


Текущее время: 02:37. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot