Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы и ответы к письм. мод. по Делфи.doc
Скачиваний:
4
Добавлен:
18.07.2019
Размер:
271.36 Кб
Скачать

Опишите правила наследования классов.

Ответ: Наследование — это построение нового класса на основе ранее описанного. Полученные в результате наследования классы называются классами-наследниками (или дочерними классами), а классы, на основе которых они построены — классами-родителями (или родительскими классами).

При наследовании дочерний класс приобретает все свойства и методы родительского класса и имеет доступ к любому члену родительского класса, за исключением описанных с областью видимости private.

При описании дочернего класса с использованием наследования имя родительского класса указывается в скобках после ключевого слова class в заголовке интерфейсной части описываемого класса.

Класс-наследник может быть описан на основе любого другого класса, вне зависимости от того, является ли родительский класс в свою очередь дочерним. Все классы в Delphi являются наследниками класса TObject, даже если это явно не указывается.

Поясните сущность полиморфизма

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

Как и все объектно-ориентированные языки программирования, Delphi поддерживает свойство полиморфизма объектов при наследовании, которое состоит в правильном выборе виртуального метода, вызываемого из переменной-ссылки на объект. Вне зависимости от того, на экземпляр какого класса указывает переменная-ссылка в соответствии со своим описанием, будет вызван тот виртуальный метод, который описан в классе, на который указывает реальная ссылка.

-.

Приведите правила переопределения методов

Ответ: Для переопределения метода, реализованного в объекте-родителе, следует:

указать его заголовок в описании дочернего объекта без изменения имени, списка параметров и возвращаемого значения (если метод является функцией);

указать после заголовка метода ключевое слово override;

реализовать метод в описательной части объекта по обычным правилам. Если

ключевое слово override не указано, то метод не переопределяется. Чтобы метод мог быть переопределен в дочерних классах, он должен быть помечен ключевыми словами virtual или dynamic в интерфейсной части класса-родителя.

Разницу между использованием ключевых слов virtual и dynamic

Ответ: Ключевое слово virtual указывает на то, что метод должен быть занесен в так называемую таблицу виртуальных методов (ТВМ), а ключевое слово dynamic — на то, что метод должен быть найден по имени в дереве родительских объектов. Разница между использованием virtual или dynamic заключается в направлении оптимизации компилятором вызовов переопределяемых методов. Методы, помеченные virtual, оптимизируются по скорости, а dynamic-методы по размеру программного кода.

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