Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Листинг 11.1. Простое наследование
1: //Листинг 11.1. Простое наследование 2: 3: #include < iostream.h> 4: enum BREED { GOLDEN, CAIRN, DANDIE, SHETLAND, 00BERMAN, LAB } 5: 6: class Mammal 7: { 8: public: 9: // Конструкторы 10: Mammal(); 11: ~Mammal(); 12: 13: // Методы доступа к данным 14: int GetAge()const; 15: void SetAge(int); 16: int GetWeight() const; 17: void SetWeight(); 18: 19: // Другие методы 20: void Speak() const; 21: void Sleep() const; 22: 23: 24: protected: 25: int itsAge; 26: int itsWeight; 27: }; 28: 29: class Dog: public Mammal 30: { 31: public: 32: 33: // Конструкторы 34: Dog(); 35: ~Dog(); 36: 37: // Методы доступа к данным 38: BREED GetBreed() const; 39: void SetBreed(BREED); 40: 41: // Другие методы 42: WagTail(); 43: BegForFood(); 44: 45: protected: 46: BREED itsBreed; 47: };
Результат: Данная программа ничего не выводит на экран, так как пока содержит только объявления и установки классов. Никаких функций эта программа пока не выполняет.
Анализ: Класс Mammal объявляется в строках 6—27. Обратите внимание, что класс Mammal не производится ни от какого другого класса, хотя в реальной жизни можно сказать, что класс млекопитающих производится от класса животных. Но в C++ всегда отображается не весь окружающий мир, а лишь модель некоторой его части. Действительность слишком сложна и разнообразна, чтобы отобразить ее в одной, даже очень большой программе. Профессионализм состоит в том, чтобы с помощью относительно простой модели воспроизвести объекты, которые будут максимально соответствовать своим реальным эквивалентам. Иерархическая структура нашего мира берет свое начало неизвестно откуда, но наша конкретная программа начинается с класса Mammal. В связи с этим некоторые переменные-члены, которые необходимы для работы базового класса, должны быть представлены в объявлении этого класса. Например, все животные независимо от вида и породы имеют возраст и вес. Если бы класс Mammal производился от класса Animals, то можно было бы ожидать, что он унаследует эти атрибуты. При этом атрибуты базового класса становятся атрибутами произведенного класса. Чтобы облегчить работу с программой и ограничить ее сложность разумными рамками, в классе Mammal представлены только шесть методов: четыре метода доступа, а также функции Speak() и Sleep(). В строке 29 класс Dog наследуется из класса Mammal. Все объекты класса Dog будут иметь три переменные-члена: itsAge, itsWeight и itsBreed. Обратите внимание, что в объявлении класса Dog не указаны переменные itsAge и itsWeight. Объекты класса Dog унаследовали эти переменные из класса Mammal вместе с методами, объявленными в классе Mammal, за исключением копировщика, конструктора и деструктора.
|