Наследование и происхождение
На рис. 10.1 приведена схема отношений между базовым классом (base class) и про исходящими от него производными классами (derived class). Трудно представить прямо сейчас, чем могли бы быть базовый и производный классы; постарайтесь понять, что про изводный класс наследует от базового класса, и в том смысле базовый класс — то же самое, что и Смит для Тома.
Отношения между производным и базовым классами применимы только к от крытому наследованию (public inheritance). Это занятие начинается с рассмо трения открытого наследования, чтобы объяснить саму концепцию наследова ния на примере его наиболее распространенной формы, прежде чем перехо дить к закрытому и защищенному наследованию.
Основы наследования 249
Чтобы проще объяснить эту концепцию, рассмотрим базовый класс B i r d (Птица). От класса B i r d происходят классы Crow (Ворона), P a r r o t (Попугай) и Kiwi (Киви). Класс B i r d определяет большинство основных атрибутов птицы, таких как наличие крыльев, откладывание яиц, способность лететь (у большинства). Производные классы, такие как Brow, P a r r o t и Kiwi, унаследовали бы эти атрибуты и скорректировали бы их (например, класс Kiwi не имел бы реализации метода F l y () (летать)). Еще несколько примеров на следования приведено в табл. 10.1.
ТАБЛИЦА 10.1. Примеры открытого наследования из повседневной жизни
Базовый класс Примеры производных классов
i s h (Рыба)G o l d f i s h (Золотая рыбка), C a r p (Карп), Tuna (Тунец) (Тунец е с т ь рыба)
Mammal Human (Человек), E l e p h a n t (Слон), L i o n (Лев), P l a t y p u s (Утконос)
Млекопитающее) (Утконос е с т ь млекопитающее)
B i r d (Птица) Crow (Ворона), P a r r o t (Попугай), O s t r i c h (Страус), Kiw i (Киви),
P l a t y p u s (Утконос) (Утконос е с т ь также и птица!)
Shape (Форма) C i r c l e (Круг), P o l y g o n (Многоугольник) (Круг е с т ь форма)
P o ly g o n T r i a n g l e (Треугольник), O c t a g o n (Восьмиугольник) (Восьмиуголь
Многоугольник) ник е с т ь многоугольник, который е с т ь форма)
Эта таблица демонстрирует то, что если надеть объектно-ориентированные очки, то примеры наследования можно увидеть повсюду вокруг. F i s h — это базовый класс для класса Tuna, поскольку Тунец, как и Карп, является рыбой и имеет все присущие рыбе характеристики, такие как хладнокровие. Однако Тунец отличается от Карпа внешним видом, скоростью плавания и тем фактом, что это морская рыба. Таким образом, клас сы Tuna и C a r p наследуют общие характеристики от общего базового класса F i s h , но все же специализируют атрибуты своего базового класса, чтобы отличатся друг от друга (рис. 10.2).
Do'stlaringiz bilan baham: |