Объектно-ориентированное программирование на языке С++. Лясин Д.Н - 54 стр.

UptoLike

Составители: 

54
{A a; B b;
a.x=5; //в классе А комп. данное х общедоступное
//b.x=1; ошибка!!! В классе B унаследованный от А компонент хчастный
}
Из последнего примера можно сделать вывод, что один и тот же компонент
класса в своем собственном классе и будучи унаследованным в производном клас-
се имеет различную область видимости: компонентное данное, определенное в
классе А как общедоступное, в классе В становится частным. Область видимости
компонент базового класса в производном при их наследовании
зависит от:
1) области видимости компонента в базовом классе;
2) способа определения производного класса (через class или struct);
3) спецификации доступа, указанной в списке базовых классов при объявле-
нии наследования.
Пояснения требует третий пункт: при объявлении списка наследования для
каждого базового класса можно указать спецификатор доступа в виде уже извест-
ных
нам ключевых слов public, protected, private. В этом случае список наследо-
вания может выглядеть, например, следующим образом:
class A: public B, private C, protected D
{…};
Правила, по которым изменяются области видимости компонент класса при
наследовании, приведены в таблице 1.
Таблица 1.
Изменение области видимости компонент базового класса в производном
Область видимости в производном
классе
Область видимо-
сти в базовом
классе
Спецификатор
доступа в списке
порождения
производный
класс объявлен
через struct
производный
класс объявлен
через class
p
ublic нет
p
ublic
p
rivate
p
ublic
p
ublic
p
ublic
p
ublic
p
ublic
p
rotected
p
rotected
p
rotected
p
ublic
p
rivate
p
rivate
p
rivate
p
rotected нет
p
ublic
p
rivate
p
rotected
p
ublic
p
rotected
p
rotected
   {A a; B b;
     a.x=5; //в классе А комп. данное х общедоступное
    //b.x=1; ошибка!!! В классе B унаследованный от А компонент х – частный
   }
   Из последнего примера можно сделать вывод, что один и тот же компонент
класса в своем собственном классе и будучи унаследованным в производном клас-
се имеет различную область видимости: компонентное данное, определенное в
классе А как общедоступное, в классе В становится частным. Область видимости
компонент базового класса в производном при их наследовании зависит от:
   1) области видимости компонента в базовом классе;
   2) способа определения производного класса (через class или struct);
   3) спецификации доступа, указанной в списке базовых классов при объявле-
      нии наследования.
     Пояснения требует третий пункт: при объявлении списка наследования для
каждого базового класса можно указать спецификатор доступа в виде уже извест-
ных нам ключевых слов public, protected, private. В этом случае список наследо-
вания может выглядеть, например, следующим образом:
     class A: public B, private C, protected D
     {…};
     Правила, по которым изменяются области видимости компонент класса при
наследовании, приведены в таблице 1.
                                                                                  Таблица 1.
                Изменение области видимости компонент базового класса в производном
Область видимо-          Спецификатор                 Область видимости в производном
 сти в базовом          доступа в списке                             классе
     классе               порождения                   производный          производный
                                                      класс объявлен      класс объявлен
                                                        через struct         через class
     public                     нет                       public             private
     public                   public                      public             public
     public                  protected                   protected          protected
     public                   private                     private            private
    protected                   нет                       public             private
    protected                 public                     protected          protected
                                                 54