Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Наследование конструкторов

Читайте также:
  1. I. Наследование доли в уставном капитале общества с ограниченной ответственностью
  2. Абстрактые классы, виртуальные методы. Наследование и замещение методов.
  3. Билет №20. Аллельные гены. Наследование признаков при взаимодействии аллельных генов. Примеры. Множественный аллелизм. Механизм возникновения.
  4. Билет №21. Неаллельные гены. Наследование признаков при взаимодействии неаллельных генов. Примеры.
  5. Глава 2. НАСЛЕДОВАНИЕ ПО ЗАВЕЩАНИЮ
  6. Глава 3. НАСЛЕДОВАНИЕ ПО ЗАКОНУ
  7. Глава 5. НАСЛЕДОВАНИЕ ПО ЗАКОНУ

Использование защищенного доступа

Public - открыты для доступа. Если убрать public, то поля автоматически станут закрытыми для доступа (private), в том числе и для доступа из производного класса. Решить проблему доступа к закрытым полям базового класса из производного можно двумя способами: используя свойства класса или спецификатор protected. При объявлении какого-то члена класса с помощью спецификатора protected, он становится закрытым для всех классов, кроме производных.

 

Наследование конструкторов

В иерархии классов как базовые, так и производные классы могут иметь собственные конструкторы. При этом конструктор базового класса создает часть объекта, соответствующую базовому классу, а конструктор производного класса — часть объекта, соответствующую производному классу. Так как базовый класс не имеет доступа к элементам производного класса, то их конструкторы должны быть раздельными.

Если же конструкторы определены и в базовом, и в производном классе, то процесс создания объектов несколько усложняется, т.к. должны выполниться конструкторы обоих классов. В этом случае используется ключевое слово base, которое имеет два назначения:

1) позволяет вызвать конструктор базового класса:

Производный класс может вызывать конструктор, определенный в его базовом классе, используя расширенную форму объявления конструктора и ключевое слово base. Формат расширенного объявления:

 

конструктор_производного_класса (список_параметров): base (список_аргументов)

{ тело конструктора }

 

где с помощью элемента списка аргументов передаются параметры конструктору базового класса.

 

В общем случае с помощью ключевого слова base можно вызвать конструктор любой формы, определенный в базовом классе. Реально же выполнится тот конструктор, параметры которого будут соответствовать переданным при вызове аргументам. Например:

 

2) позволяет получить доступ к члену базового класса, который скрыт "за" членом производного класса.

В этом случаеключевое слово base действует подобно ссылке this, за исключением того, что ссылка base всегда указывает на базовый класс для производного класса, в котором она используется. В этом случае формат ее записи выглядит следующим образом:

 

base.член_класса

 

Здесь в качестве элемента член_класса можно указывать либо метод, либо поле экземпляра. Эта форма ссылки base наиболее применима в тех случаях, когда имя члена в производном классе скрывает член с таким же именем в базовом классе.

 

Несмотря на то, что метод Show в классе DemoLine скрывает одноименный метод в классе DemoPoint, ссылка base позволяет получить доступ к методу Show в базовом классе. Аналогично с помощью ссылки base можно получить доступ к одноименным полям базового класса.

 


Дата добавления: 2015-07-15; просмотров: 85 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Автотрансформаторы ФГУП ВЭИ| Абстрактные методы и классы

mybiblioteka.su - 2015-2024 год. (0.012 сек.)