Наследование
Наследование является одним из механизмов объектно-ориентированного программирования.
Класс в программировании описывает некоторое множество элементов (объектов) с общими свойствами (которые определяются полями класса) и поведением (методы класса). Некоторые из этих элементов обладают дополнительными свойствами - они образуют подмножество данного множества. Соответственно, это подмножество будет описываться некоторым классом, схожим с первоначальным, но с дополнительными полями и/или методами. Этот класс называется производным классом (дочерним классом, классом-потомком), а начальный класс называется базовым классом или классом-предком.
пример наследования:
class A {
int field;
public:
A(): field(0) {}
};
class B: public A {
bool activity;
public:
B(): A(), activity(true) {}
bool isActive() const {
return activity;
}
};
В связи с тем, что производный класс описывает некоторое подмножество элементов базового класса, указатель на объект базового класса может ссылаться и на объект производного класса. Обратное утверждение неверное (указатель на объект класса-потомка не может ссылаться на объект базового класса).
Пример:
A* a = new B(); // OK!
B* b = new A(); // ERROR!
Производный класс обладает всеми свойствами родительского класса, а также поведением, если это поведение не было переопределено. Переопределение функций класса определяется простым описанием данной функции в дочернем классе:
#include <cstdio>
class Parent{
public:
Parent(){}
void Print(){ puts("Parent"); }
};
class Child: Parent{
public:
Child(){}
void Print(){ puts("Child"); }
};
int main(){
Child c;
c.Print();
return 0;
}
Last updated