private, public, protected как модификаторы для наследования

После изучения модификаторов доступа внутри класса и простого наследования нужно понять принципы модификаторов доступа при наследовании. Модификаторы доступа public, private и protected применяются как внутри класса, так и к самому классу при наследовании. Вот об этих применяемых к классу модификаторах в этой статье и написано.
Для начала попробуйте понять таблицу:

public наследование
private наследование
protected наследование

сlass A
{
private: int x;
public: int y;
protected: int z;
};
сlass B как потомок A
{
private: int x;
public: int y;
protected: int z;
};
сlass C как потомок B
{
private: int x;
public: int y;
protected: int z;
};

сlass A
{
private: int x;
public: int y;
protected: int z;
};

сlass B как потомок А
{
private: int x;
public: int y;
protected: int z;
};
сlass C как потомок B
{
private: int x;
public: int y;
protected: int z;
};

сlass A
{
private: int x;
public: int y;
protected: int z;
};

сlass B как потомок A
{
private: int x;
public: int y;
protected: int z;
};
сlass C как потомок B
{
private: int x;
public: int y;
protected: int z;
};

Зачёркнутое в таблице не обозначает, что оно не наследуется, но обозначает, что модификатором доступа прямой контакт из наследника к такой части закрыт.
Используя public-наследование мы передаем потомкам всё, что есть в основном классе, в таком виде, как и записано в основном классе. Получаем клон основного класса. Разница в том, что элементы основного класса к элементам своего клона отношения не имеют. Это отображает листинг #1:

Используя private-наследование можно создать первого потомка, от которого дальнейшее наследование будет бессмысленно. Если первый потомок получает возможность работы с некоторыми элементами, переданными по механизму наследования, то потомки первого потомка таких возможностей не получают. Кроме того, потомки первого потомка даже лишены возможности узнавать, кто их первый родитель. Предполагается, что потомки класса B не должны даже знать о существовании класса A (либо потомков класса B вообще не должно быть). Это отображается в листинге #2. (Примечание: Под первым потомком подразумевается потомок первого уровня. Таких потомков может быть сколько угодно)

Использованием protected-наследования программистом предполагается, что внутри всех потомков и потомков потомков и потомков потомков потомков будут использоваться только такие элементы, передаваемые механизмом наследования, которые будут защищены от влияния на себя извне своих классов. Это отображается в листинге #3:

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

7 комментариев: private, public, protected как модификаторы для наследования

  • Peter Blood говорит:

    Очень хорошая статья. Автору большое спасибо




    0



    0
  • Александр говорит:

    Спасибо.
    Ссылку поправь на «Знакомство с protected (модификатор доступа внутри класса)»




    0



    0
  • Anonim говорит:

    Сижу разбираюсь в этой теме, смутила фраза «Нельзя обратиться к private элементу унаследованному от родителя».
    Пришёл к выводу, что можно, если обратиться к нему через унаследованную аксессорную функцию 🙂




    0



    0
    • admin говорит:

      Давайте пример, что ли. Пример -то понагляднее будет чем выбрасывание терминов типа: «аксессорные функции»




      0



      0
      • Anonim говорит:

        Ну как-то так:

        На экране будет:
        i=777
        j=666




        0



        0
        • admin говорит:

          я исправлю в этих записях, что напрямую нельзя. Моя неточность.
          что еще заметите, пишите. Спасибо.




          0



          0

Добавить комментарий

Ваш e-mail не будет опубликован.

− 2 = 3

Поиск

 
     

Случайная книга в электронном формате

https://www.litres.ru/d-linoves/virtualnaya-realnost-v-unity-22807889/?lfrom=15589587
Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

В черном-черном городе, на черной-черной улице, в черном-черном доме, в черно-черной квартире сидит черный-черный мужик и говорит: - Никогда больше не буду сам заправлять картриджи!

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок