Программирование на языке высокого уровня. Марапулец Ю.В. - 93 стр.

UptoLike

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

class A { ... };
class В { ... };
class С { ... };
class D: A, protected В, public С
{...};
При этом D наследует все элементы базовых классов. По умолчанию наследуют-
ся только элементы базовых классов, имеющие тип public и protected. Для изменения
этого умолчания при описании базовых классов могут указываться спецификаторы
доступа public или private. Эти спецификаторы не меняют спецификаций доступа для
элементов базовых классов, а только определяют доступ к этим элементам из порож-
даемых классов. При описании классов для базовых элементов по умолчанию берется
спецификатор private, для структур - public. Объединения не участвуют в иерархии
классов. В общем случае, для определения возможности доступа к элементу руково-
дствуются таблицей 3.1.
Таблица 3.1
Доступ в базовом классе Ключ доступа Доступ в порожденном классе
public public public
private public не доступен
protected public protected
public private private
private private не доступен
protected private private
public protected protected
private protected private
protected protected protected
Как видно из таблицы, private элементы базового класса в производном классе не-
доступны вне зависимости от ключа. Обращение к ним может осуществляться только
через методы базового класса.
Элементы protected при наследовании с ключом private становятся в производном
классе private, в остальных случаях права доступа к ним не изменяются. Доступ к эле-
ментам publiс при наследовании становится соответствующим ключу доступа.
Данные, приведенные в таблице, иллюстрируются следующими примерами:
class X: А {...}// класс Х порождается из класса А доступ - private
class Y: В, public С {...} // класс Y порождается (множественное наследование)
//из В и С. В - private, С - public
struct S: D {...} // структура S порождается из D доступ - public
Определение доступа к наследуемым элементам может быть проведено и явно, пу-
тем указания наследуемых элементов в описаниях порождаемого класса. Например:
class В
{
int a; // private по умолчанию
public: int b,c;
int Bfunc (void);
};
class X: private В // b,c, Bfunc - private для Х
{
int d; // private по умолчанию
93
class A { ... };
class В { ... };
class С { ... };
class D: A, protected В, public С
{...};

     При этом D наследует все элементы базовых классов. По умолчанию наследуют-
ся только элементы базовых классов, имеющие тип public и protected. Для изменения
этого умолчания при описании базовых классов могут указываться спецификаторы
доступа public или private. Эти спецификаторы не меняют спецификаций доступа для
элементов базовых классов, а только определяют доступ к этим элементам из порож-
даемых классов. При описании классов для базовых элементов по умолчанию берется
спецификатор private, для структур - public. Объединения не участвуют в иерархии
классов. В общем случае, для определения возможности доступа к элементу руково-
дствуются таблицей 3.1.
                                                                        Таблица 3.1
  Доступ в базовом классе         Ключ доступа      Доступ в порожденном классе
           public                    public                    public
           private                   public                 не доступен
          protected                  public                   protected
           public                    private                   private
           private                   private                не доступен
          protected                  private                   private
           public                   protected                 protected
           private                  protected                  private
          protected                 protected                 protected

     Как видно из таблицы, private элементы базового класса в производном классе не-
доступны вне зависимости от ключа. Обращение к ним может осуществляться только
через методы базового класса.
     Элементы protected при наследовании с ключом private становятся в производном
классе private, в остальных случаях права доступа к ним не изменяются. Доступ к эле-
ментам publiс при наследовании становится соответствующим ключу доступа.
Данные, приведенные в таблице, иллюстрируются следующими примерами:

class X: А {...}// класс Х порождается из класса А доступ - private
class Y: В, public С {...} // класс Y порождается (множественное наследование)
                                //из В и С. В - private, С - public
struct S: D {...} // структура S порождается из D доступ - public

     Определение доступа к наследуемым элементам может быть проведено и явно, пу-
тем указания наследуемых элементов в описаниях порождаемого класса. Например:

class В
{
       int a; // private по умолчанию
     public: int b,c;
       int Bfunc (void);
};
class X: private В // b,c, Bfunc - private для Х
{
        int d; // private по умолчанию

                                             93