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

Перекрытие элементов класса в производных классах

Модульное программирования | Понятие класса | Когда начинается работа с объектом, то он размещается в памяти. | Свойства-массивы | Атрибуты доступа к элементам объектов | Механизм вызова виртуального метода | Абстрактный виртуальный метод | Методы обработки сообщений | Понятие ссылки на метод объекта | Понятие события |


Читайте также:
  1. Cвойства стандартных элементов управления
  2. q]2:1:Форма бытия материи, выражающая протяженность составляющих ее объектов, их строение из элементов и частей называется
  3. Анализ имиджевых элементов отеля «Stone».
  4. Б) элементы системы вне зависимости от ее класса образуют устойчивые достаточно сильные взаимосвязи
  5. Бронирование в разных классах
  6. В: Что уже известно об игровых классах?
  7. ВЕРТИКАЛЬНЫЕ ПРЕДЕЛЬНЫЕ ПРОГИБЫ ЭЛЕМЕНТОВ КОНСТРУКЦИЙ

В механизме наследования можно условно выделить три основных момента:

ƒ наследование полей;

ƒ наследование свойств;

ƒ наследование методов.

 

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

В наследнике можно вызвать перекрытый метод предка, указав перед именем метода зарезервированное слово inherited. Когда метод предка полностью совпадает с методом потомка по формату заголовка, то можно использовать более короткую запись.

 

Главные черты классов:

1) Классы инкапсулируют (т.е. включают в себя) поля, методы и свойства;

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

 

При реализации класса TTextReader ничего не известно о том, как хранятся элементы в считываемых строках, поэтому метод ParseLine ничего не делает. Очевидно, что создавать объекты класса TTextReader не имеет смысла. Для чего тогда нужен классTTextReader?

Ответ: чтобы на его основе определить (породить) два других класса— TDelimitedReader и TFixedReader, предназначенных для чтения данных в конкретных форматах.

 

 

Класс TDelimitedReader является прямым потомком класса TTextReader. Если от TDelimitedReader породить новый класс, то он тоже будет потомком класса TTextReader, но уже не прямым.

 

Любой порожденный класс наследует от родительского все поля данных. Доступ к полям предка осуществляется по имени, как если бы они были определены в потомке. В потомках можно определять новые поля, но их имена должны отличаться от имен полей предка.

 

Наследование свойств и методов имеет свои особенности. Свойство базового класса можно перекрыть (от англ. override) в производном классе, например, чтобы добавить ему новый атрибут доступа или связать с другим полем или методом.

 

Метод базового класса тоже можно перекрыть в производном классе, например чтобы изменить логику его работы.

сonstructor TDelimitedReader.Create(const FileName: string; const ADelimiter: Char = ';');

begin

inherited Create(FileName);

FDelimiter:= ADelimiter;

end;

 

Как видно из примера, в наследнике можно вызвать перекрытый метод предка, указав перед

именем метода зарезервированное слово inherited. Когда метод предка полностью совпадает

с методом потомка по формату заголовка, то можно использовать более короткую запись.

 

Destructor TTextReader.Destroy;

begin

Active:= False;

inherited; // Эквивалентно: inherited Destroy;

end;

 

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

 


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


<== предыдущая страница | следующая страница ==>
Для классов, связанных наследованием, существует расширенная совместимость типов (совместимы по представлению в памяти).| Информация о типе времени выполнения программы

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