Свойства-массивов, переопределение свойств при наследовании
Объявления свойств-массивов
Объявление свойств-массивов имеет ряд особенностей как при их объявлении, так и при использовании. Синтаксис объявления свойства-массива класса:
Property <имя cвoucmвa>[[Const] <индекс1>:<тип идекса>
[; [Coast] <индекс2>:<тип индекса>] ]: <тип данных>
[Read <метод чтения>]
[Write <метод записи>][; Default];
Примечания:
• Индексы свойств-массивов оформляются аналогично параметрам процедур и функции, но только в квадратных скобках.
• Идентификатор индекса свойства-массива может дополняться спецификатором Const.
• Команда Default отделяется от других команд объявления свойства-массива точкой с запятой и должна быть последней.
• Свойства-массивы могут иметь индексы любого стандартного типа.
Доступ к полю типа массив с помощью свойства со строковым индексом производится по значению строки. Фактически ищется индекс элемента массива, значение которого равно строковому индексу свойства-массива.
Переопределение свойств при наследовании
При наследовании свойств можно в классе-потомке заменить унаследованную или добавить отсутствующую команду, изменить видимость и даже повторно объявить свойство.
а) Для изменения области видимости необходимо в классе-потомке объявить имя свойства без указания типа и команд в разделе с большей видимостью, обычно в Public или Published, т.е. в сторону увеличения видимости.
Public Property MyProperty;
б) Для изменения или добавления команды следует объявить свойство без указания типа с дополнительной и/или измененной командой
(Read] Write|Stored|Default|NoDefault). Одновременно можно изменить и область видимости.
в) Для повторного объявления свойства следует указать имя свойства вместе с новым типом. Обязательно должна быть хотя бы одна команда доступа (Read|Write). При переопределении свойства можно вместо старых методов доступа объявить и использовать новые.
Отметим, что переопределение не запрещает доступ к исходному свойству. Путем приведения типов можно обратиться к свойству предка или потомка. При этом будут вызваны методы доступа свойства того класса, объект которого указывается при приведении типов. Таким образом, полиморфизм при доступе к свойству не наблюдается.