В композиции один класс (внешний) хранит экземпляр другого класса (внутреннего) в переменной экземпляра. Внешний класс поручает работу внутреннему классу, вызывая методы над этим экземпляром.
//Внутренний класс является аналогом суперкласса в наследовании
public class A{
public function doSomething(){
}
}
//Внешний класс является аналогом подкласса в наследовании
public class B{
//Экземпляр внутреннего класса сохраняется в закрытой переменной экземпляра b
private var b;
//Конструктор создает экземпляр внутреннего класса
public function B(){
b=new A();
}
//Этот метод поручает работу методу doSomething() класса А
public function doSomething(){
b. doSomething();
}
}
Класс B не расширяет класс А. Композиция не требует применения собственного особого синтаксиса, как это происходит с наследованием. Внешний класс может использовать подмноже
...
Читать дальше »