68952

Наслідування. Доступ до членів класу

Лекция

Информатика, кибернетика и программирование

Наслідування — один з наріжних каменів обєктно-орієнтованого програмування, оскільки воно дозволяє створювати ієрархічні класифікації Використовуючи Наслідування, можна створювати загальні класи, що визначають властивості, характерні для всієї сукупності споріднених класів.

Украинкский

2014-09-28

31.5 KB

0 чел.

Лекція № 14

Тема: Наслідування. Доступ до членів класу.

Наслідування — один з наріжних каменів об'єктно-орієнтованого програмування, оскільки воно дозволяє створювати ієрархічні класифікації Використовуючи Наслідування, можна створювати загальні класи, що визначають властивості, характерні для всієї сукупності споріднених класів. Ці класи можуть успадковувати властивості один у одного, додаючи до них свої власні унікальні характеристики.

Згідно стандартної термінології мови C++ клас, лежачий в основі ієрархії, називається базовим (base class), а клас, що успадковує властивості базового класу, — похідним (derived class). Похідні класи, у свою чергу, можуть бути базовими по відношенню до інших класів.

У мові C++ передбачений могутній і гнучкий механізм наслідування.

Управління доступом до членів базового класу

При наслідуванні члени базового класу стають членами похідного класу. Як правило, для наслідування використовується наступна синтаксична конструкція.

с1ass імя-похідного-класу: рівень_доступу імя-базового-класу

{

// тіло класу

}

Параметр рівень_доступу визначає статус членів базового класу в похідному класі. Як цей параметр використовуються специфікатори public, private або protected. Якщо рівень доступу не вказаний, то для похідного класу за умовчанням використовується специфікатор private, а для похідної структури - public. Розглянемо варіанти, що виникають в цих ситуаціях. (Специфікатор protected буде описаний в наступному розділі.)

Якщо рівень доступу до членів базового класу задається специфікатором publiс то всі відкриті і захищені члени базового класу стають відкритими і захищеними членами похідного класу. При цьому закриті члени базового класу не міняють свого статусу і залишаються недоступними членам похідного. Як демонструє наступна програма, об'єкти класу derived можуть безпосередньо посилатися на відкриті члени класу base.

#include <iostream>

using namespace std;

class base {

int i, j;

public:

void set(int а, int b) { i=a; j=b; }

void show() { cout « i << " " « j « "\n"; }

};

class derived : public base {

int k;

public:

derived(int x) { k=x; }

void showkO { cout « k « "\n"; }

};

int main() {

derived ob (3) ;

fcb.set(l, 2); // Звернення до члена класу base

ob.showO; // Звернення до члена класу base

job.showkO; // Звернення до члена класу derived

return 0 ;

}

Якщо властивості базового класу успадковуються за допомогою специфікатора доступу private, всі відкриті і захищені члени базового класу стають закритими ними похідного класу. Наприклад, наступна програма навіть не буде скомпільована, оскільки обидві функції set() і show() тепер є закритими членами класу derived.

Ця програма не буде скомпільована.

#include <iostream>

using namespace std;

class base {

int i, j ;

public:

void set (int а, int b) { i=a; j=b; }

void show() { cout « i « " " « j « "\n";}

};

 

Відкриті члени класу base є закритими членами класу derived.

class derived : private base {

int k;

public:

derived(int x) { k=x; }

};

void main() {

derived ob (3) ;

ob.set (1, pb.show());

// Помилка, доступ до функції set() заборонений.

ob.show();

// Помилка, доступ до функції show() заборонений.

}

При закритому наслідуванні всі відкриті і захищені члени базового класу стають закритими членами похідного класу. Це означає, що вони залишаються доступними членам похідного класу, але недоступні решті елементів програми, що не є членами базового або похідного класів.


 

А также другие работы, которые могут Вас заинтересовать

54922. Environmental Problems 68 KB
  It’s a wonderful world we live in. It is our Earth. For thousands of years the Earth has given support to all forms of life – human beings, animals, birds, fishes, insects and plants. But now people all over the world think about our planet. They think about air, water, plants and animals on the Earth. They say our planet is in danger. We have very serious environmental problems on our Earth. Who can say what these problems are?
54926. ПЛАН ПСИХОЛОГИЧЕСКОГО АНАЛИЗА УРОКА 32.5 KB
  Место и значение данного урока в перспективном плане развития учащихся Формулировка цели. В какой мере содержание и структура урока отвечают принципам развивающего обучения: Соотношение нагрузки на память и мышление учащихся; Соотношение воспроизводящей и творческой деятельности учащихся; Соотношение усвоения знаний в готовом виде со слов учителя ученика и т. и самостоятельного поиска; Какие звенья проблемноэвристического обучения выполняются учителем и какие учащимися кто ставит проблему кто решает; Соотношение...
54927. Размножение и развитие насекомых 52.5 KB
  Так как учитель ставит перед учениками различные интересные задачи решение которых требует не только жизненного опыта но и логического мышления. Организация внимания Для организации внимания учеников на занятиях учитель обращает внимание на такие аспекты как: выделение важной информации то есть основную так называемый скелет новой темы который будет обрастать более подробной информацией. Важную информацию учитель выделяет с помощью занесения ее в конспект изменения тембра голоса также с помощью сосредоточения учеников на ней чтобы они...
54928. Валовой национальный продукт и методы его исчисления. Номинальный, реальный и потенциальный ВНП 20.34 KB
  Валовой национальный продукт – это рыночная стоимость конечных товаров и услуг, произведенных в течение года факторами производства, принадлежащими гражданам данной страны независимо от их местонахождения. Существует три метода определения величины ВНП: - метод конечного использования – определение ВНП как суммы расходов