Краткие теоретические сведения
Наследование – один из принципов построения классов. Классы в общем случае могут составлять иерархию: один класс получается из другого, на основании другого получается третий и т.д. То есть речь идет о том, что и в классах существуют родители и дети. Наследование предполагает, что все характеристики класса-родителя присваиваются классу-потомку. После этого потомку при необходимости добавляют новые характеристики. Иногда некоторые методы в классе-потомке, полученном от предков, переопределяются, т.е. наполняются новым содержанием.
Наследование используется не только при разработке классов, но и при проектировании приложения. Например, в C++Builder есть класс Label (метка). Если поместить экземпляр этой метки в форму (экземпляр Form), то свойство «шрифт» метки примет значение свойства «шрифт» из экземпляра Form. Меняя параметры шрифта у родителя (Form), мы добиваемся изменения этих параметров у потомков (наследников). То есть метка автоматически будет наследовать это свойство от экземпляра Form, на который она помещена. Это же относится, например, и к классу Button (кнопка).
Простым (или одиночным) называется наследование, при котором производный класс имеет только одного родителя. Формально наследование одного класса от другого задается следующей конструкций:
class имя_класса_потомка: [модификатор_доступа] имя_базового_класса
{ тело_класса };
Модификатор доступа определяет доступность элементов базового класса в классе−наследнике. Квадратные скобки не являются элементом синтаксиса, а показывают, что модификатор может отсутствовать. Этот модификатор называется модификатором наследования.
При разработке отдельных классов используются два модификатора доступа к элементам класса: public (общий) и private (личный). При наследовании применяется еще один: protected (защищенный). Защищенные элементы класса доступны только прямым наследникам и никому другому.
Возможны четыре варианта наследования.
1. Класс от класса.
2. Класс от структуры.
3. Структура от структуры.
4. Структура от класса.
Доступность элементов базового класса из классов−наследников изменяется в зависимости от модификаторов доступа в базовом классе и модификатора наследования. Каким бы ни был модификатор наследования, приватные элементы базового класса недоступны в его потомках. В табл. 1.1 приведены все варианты доступности элементов базового класса в производном классе при любых вариантах модификатора наследования.
Таблица 1.1 Доступ к элементам базового класса в классе−наследнике
Модификатор доступа в базовом классе | Модификатор наследования | Доступ в производном классе | |
struct | class | ||
public | отсутствует | public | private |
protected | отсутствует | public | private |
private | отсутствует | недоступны | недоступны |
public | public | public | public |
protected | public | protected | protected |
private | public | недоступны | недоступны |
public | protected | protected | protected |
protected | protected | protected | protected |
private | protected | недоступны | недоступны |
public | private | private | private |
protected | private | private | private |
private | private | недоступны | недоступны |
Если модификатор наследования — public, наследование называется открытым. Модификатор protectedопределяет защищенное наследование, а слово private означает закрытое наследование.
Дата добавления: 2015-07-30; просмотров: 814;