Информатика и технология программирования


Двоичное дерево - часть 6


При проектировании производного класса определяется потенциальное множество объектов с новыми свойствами, отличными от свойств объектов базового класса. Внешне наблюдаемые свойства объекта - это его методы. Поэтому перечисленные ниже варианты наследования методов базового класса в производном нужно воспринимать с более широкой точки зрения - как способы изменения свойств объекта.



1. l " Новое свойство" . Имя определяемого в производном классе метода не совпадает ни с одним из известных в базовом классе. В этом случае это - " новое свойство" объекта, которое объект приобретает в производном классе.


class a {
public: void f() {}
};
class b : public a
{
public: void newb() {} // newb() - новое свойство (метод)


};



2.l " Полное неявное наследование" . Если в производном классе метод не переопределяется, то по умолчанию он наследуется из базового класса. Это значит, что он может быть применен к объекту производного класса, при этом будет вызван метод для базового класса, причем именно для объекта базового класса, включенного в производный. Определенное в базовом классе свойство не меняется.


class a {
public: void f() {}
};
class b : public a
{
public: // f() - унаследованное свойство (метод)


}; // эквивалентно void f() { a::f(); }




3. l " Полное перекрытие" . Если в производном классе определяется метод, совпадающий с именем с методом базового класса, причем в теле метода отсутствует вызов одноименного метода в базовом классе, то мы имеем дело с полностью переопределенным свойством. В этом случае свойство объекта базового класса в производном классе отрицается, а метод производного класса " перекрывает" метод базового.


class a {
public: void f() {}
};
class b : public a
{
public:
void f() {...} // переопределенное свойство (метод)


};



4. l " Условное наследование" . Наиболее точно отражает сущность наследования последний вариант, в котором в производном классе переопределяется метод, перекрывающий одноименный метод базового класса.


- Начало -  - Назад -  - Вперед -