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() заборонений.

}

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


 

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

69054. Объявление типа документа 134 KB
  Определение типа документа DTD (Document Type Definition) является той основой, на которой создаются документы XML. DTD представляет собой набор правил, определяющий инструкции, которые могут быть переданы анализатору (parser) для обработки им этого документа.
69055. Формирование описания документа с помощью схем 271 KB
  Элемент age может быть проверен на принадлежность его содержимого заданному типу (PCDATA), поэтому содержимое обоих дескрипторов будет считаться правильным, т.е. при использовании DTD нельзя осуществить проверку как на соответствии определенному типу данных...
69056. Объявление атрибутов в схеме XML 187 KB
  Объявление атрибута обеспечивает локальную проверку значений атрибута, а также задание значения по умолчанию или фиксированного значения. Объявление атрибута выполняется с помощью элемента attribute, имеющего следующий формат...
69057. Обработка документов XML. Вспомогательные языки XML. Язык XPath 406 KB
  Язык XML предоставляет многообразные, гибкие и эффективные возможности описания структуры данных. Однако он не обеспечивает средств для навигации в документе и поиска компонент структурированных данных внутри документа, например, для поиска наименований книг по фамилии автора.
69058. Выражения пути в XPath 287 KB
  Одна из важнейших функций XPath – это выбор множеств узлов в документе. Особый вид выражений XPath, называемый выражениями пути (path expressions), позволяет выбирать в документе множество узлов в соответствии заданными критериями.
69059. Вспомогательные языки XML. Обработка документов XML 267.5 KB
  Стандартизованный набор элементов и атрибутов HTML позволяет создавать программы просмотра (Web-браузеры) и графические редакторы документов HTML, пригодные для обработки любого документа HTML.
69060. Языки XSLT. Связывание документов XML с таблицами стилей 300.5 KB
  Наиболее простым способом форматированного вывода документов XML в Web-браузерах является связывание документа XML с внешними таблицами стилей. Для такого связывания в спецификации W3 «Связывание таблиц стилей с документами XML (Associating Style Sheets with XML documents)»...
69061. Создание текстовых узлов в XSLT 212.5 KB
  Символьные данные, содержащиеся в документе, организуются в виде текстовых узлов. Последовательности символов, встречающиеся в документах, в целях экономии никогда не разбиваются на два или более текстовых узла, а текстовые узлы никогда не бывают пустыми.
69062. Форматирование чисел в XSLT 204 KB
  XSLT предоставляет мощные возможности для форматирования строкового представления чисел при помощи функции format-number и элемента xsl:decimal-format. Запись функции имеет следующий вид: строка format-number(число, строка-формата, имя-decimal-format)