Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Наследование классов



При наследовании классов важную роль играет статус доступа компонента.

В иерархии классов (при наследовании) относительно доступности компонент принято следующее соглашение:

1) Собственные (private) методы и данные доступны только внутри класса, где они определены.

2) Защищенные (protected) компоненты доступны внутри класса, где они определены, и также доступны во все производных классах.

3) Общедоступные (public) компоненты класса глобальны, т.е. доступны из любой точки программы.

На доступность компонент влияет также выбор ключевого слова (class, struct, union), с помощью которого объявлен класс.

Следует обратить внимание, что ни базовый, ни производный класс не могут быть объявлены с помощью union.

Классы union не могут использоваться при наследовании!

Определение производных классов:

сlass T: X, Y, Z {…};

Класс T – потомок базовых классов X, Y, Z, из которых он наследует компоненты и методы.

Наследуются методы и данные со статусом доступа public и protected!

При этом,

- еслипроизводныйкласс имеет спецификатор class, то компоненты родителя получают по умолчанию в классе потомке статус - private.

- если это struct – унаследованные компоненты имеют статус public.

class A { protected: int x;

public: float y;…};

class B: A {... }; // x, y наследуются как private

struct C: A {...}; // x, y наследуются как public

Изменить статус доступа, получаемый по умолчанию можно опять с помощью спецификаторов public, protected и private.

class D: protected A {... }; // x, y наследуются как protected

class E: public A {... }; //x наследуются как protected, а y как public

class M: private A {... }; // x, y наследуются как private

struct N:: protected A {...}; // x, y наследуются как protected

struct P: public A {... }; // x наследуются как protected, а y как public

struct N:: private A {...}; // x, y наследуются как private

Пример:

class A { //базовый класс

int x // закрытое данное класса А

public:

A(int xx =0) { x=xx; cout<< “ A! ”;} // конструктор класса А

int GetX () {return x;} // функция-член класса А

~A () {cout<<endl<<”DA ”; } // деструктор класса А

};

class B: public A { // производный от А класс B

int y; // закрытое данное класса B

public:

B (int yy=0) { y = yy; cout << “ B! ”; } // конструктор класса B

int GetY { return y;} // функция-член класса B

~B () { cout<< “ DB “; } // деструктор класса B

};





Дата публикования: 2014-11-28; Прочитано: 200 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...