Delegation (Делегирование)
Наследование – это способ расширения класса, за счет наследования от родительского класса. Наследование статично и часто является неудачным решением. Делегирование – более универсальный способ расширения класса, хотя менее удобный, и применяется там, где наследование не решает задачу, например динамическое наследование.
Пример множественного наследования.
При использовании делегирования, класс не наследует методы класса, а вызывает их. Множественное наследование, если оно необходимо, также возможно реализовать с помощью делегирования. Например, человек может быть студентом и при этом быть пассажиром транспорта, и быть водителем. Класс Person делегирует ответственность по выполнению роли некоторому классу, который специально предназначен для выполнения данной роли.
В случае делегирования класс имеет набор объектов, исполняющих определенные роли.