2014-10-23 5 views
1

Вот определение состава цельной части. http://en.wikipedia.org/wiki/Object_composition И вот наследство. http://en.wikipedia.org/wiki/Inheritance_%28object-oriented_programming%29Когда наследование превращается в состав целой части

Сегодня я столкнулся с вопросом, и я не могу решить. Предположим, что у нас есть программный план о программном обеспечении, которое мы собираемся построить. Мой вопрос в том, что существующие отношения наследования между двумя классами превращаются в состав? Это звучит странно, но я не могу ответить на него. Спасибо заранее.

ответ

0

Состав (есть-a) и Наследование (is-a) - это два совершенно разных понятия. Однако существует особая ситуация, когда имеет вид: a превращается в имеет-. Рассмотрим

class MyItemList publicly inherits Vector<MyItem>... 

Это явный случай MyItemList есть- Вектор. Он обладает всеми свойствами вектора, его можно использовать в качестве вектора MyItems. Каждый может использовать экземпляр MyItemList в качестве вектора.

Теперь рассмотрим

class MyItemList privately inherits Vector<MyItem>... 

MyItemList не говорит никому это Vector. Никто не может использовать MyItemList как вектор. Он имеет все свойства вектора (имеет-вектор), но никому об этом не говорит.

Это фактически имеет отношение. Единственное различие заключается в том, что MyItemList не ссылается на вектор по атрибуту/полю/члену, а скорее на (или независимо от того, что само по себе ключевое слово использует ваш язык).

Язык, на ваш выбор, должен иметь механизм декларирования наследования как непубличного, конечно.