Ссылки на классы.
Ссылки на классы
Type RefType = class of TControl;
Var ClassRef:Reftype;
MyObject:TControl;// класс со всеми известными компонентами
Begin
If … then ClassRef:=Tedit
Else
ClassRef:=TButton;
MyObject := ClassRef.create(self);
End;
Язык Delphi позволяет рассматривать классы объектов как своего рода объекты, которыми можно манипулировать в программе. Такая возможность рождает новое понятие — класс класса; его принято обозначать термином метакласс.
Для поддержки метаклассов введен специальный тип данных — ссылка на класс (class reference). Ссылка на класс – тип данных, значениями этого типа являются имена класса. Использование ссылок на класс позволяет сделать приложение более гибким.Он описывается с помощью словосочетания class of, например:
type
TTextReaderClass = class of TTextReader;
Переменная типа TTextReaderClass объявляется в программе обычным образом:
var
ClassRef: TTextReaderClass;
Значениями переменной ClassRef могут быть класс TTextReader и все порожденные от него классы. Допустимы следующие операторы:
ClassRef := TTextReader;
ClassRef := TDelimitedReader;
ClassRef := TFixedReader;
По аналогии с тем, как для всех классов существует общий предок TObject, у ссылок на классы существует базовый тип TClass, определенный, как:
type
TClass = class of TObject;
Переменная типа TClass может ссылаться на любой класс.
Практическая ценность ссылок на классы состоит в возможности создавать программные модули, работающие с любыми классами объектов, даже теми, которые еще не разработаны.
Физический смысл и взаимосвязь таких понятий, как переменная-объект, экземпляр объекта в памяти, переменная-класс и экземпляр класса в памяти поясняет рисунок.
-
Содержание
- Принципы объектно-ориентированного программирования.
- Структура класса.
- Свойства.
- Статические и виртуальные методы.
- Перезагружаемые методы.
- Конструкторы и деструкторы.
- Интегрированная среда разработки Delphi.
- Визуальные средства разработки.
- Программирование с управлением по событиям.
- Абстрактный метод.
- Методы класса.
- Исключительные ситуации.
- Атрибуты доступа в Delphi.
- Обработка исключительных ситуаций.
- Библиотека визуальных компонентов в Delphi (vcl).
- Ссылки на классы.
- Указатели на методы.
- Фреймы и шаблоны компонентов.
- Delphi 2009: отличия от предыдущих версий.
- Классы и модули.
- Модули и программы.
- Информация о типе во время выполнения.
- Полиморфизм и виртуальные методы.