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

Создание и удалениеобъектов

Для создания и удаления объектов используются специальные методы, называемые конструктором и деструктором. Их синтаксис отличается от синтаксиса обычных методов только тем, что они обозначены ключевыми словами constructorилиdestructor.

constructor Имя_класса.Сreate ;

begin

Inherited Create;

[операторы_инициализации ]

end;

destructor Имя_класса.Destroy;

begin

[операторы_завершения ]

Inherited Destroy;

end;

При создании объекта все его поля автоматически инициализируются. Значения числовых полей устанавливаются в нуль, строковым полям присваивается строка null, а объектным полям —nil. В конструкторе программист может инициализировать поля объекта по-другому.

6.4. Методы класса

Для создания методов в собственных классах нужно добавить процедуры.

С помощью ключевого слова inheritedможно вызвать метод родительского класса. Если послеinheritedрасположено имя метода, то программа выполняет нормальный вызов, за исключением того, что поиск метода начинается с непосредственного предка класса, содержащего вызывающий метод. Если послеinheritedимени метода нет, то вызывается наследуем метод с тем же именем, что и вызывающий метод. В нашем примере имя метода по ключевого словаinheritedможет как присутствовать, так и отсутствовать. Если фактические параметры не указаны, то в наследуемый метод передаются те же параметры что и в вызывающий. Таким образом, ключевое словоinheritedиграет существенную роль в реализации полиморфизма вDelphi

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

Директива overload. Она сообщает компилятору о том, что переобьявленный метод имеет другой список параметров, поэтому он не скрывает наследуемый метод, а перегружает его. Использование ключевого словаoverload(перегрузить) — другой способ реализации принципа диморфизма вDelphi. Если метод перегружен, то вызов метода в классе-потомке активизирует тот метод, список формальных параметров которого совпадает со списком фактических параметров вызова

Необязательная директива reintroduceподавляет предупреждения компилятора о том, что методы с этим же именем уже объявлены в родительских классах..

В ObjectPascalесть два оператора классов:isиas. Операторisвыполняет проверку динамического типа, т.е. проверяет во время выполнения фактический класс объекта. Синтаксис оператораisимеет следующий вид:

экземпляр_объекта is имя_класса

Это выражение возвращает True, еслиэкземпляр_объекта является экземпляром классаимя_классаили одного из его потомков. В противном случае выражение возвращаетFalse. Еслиэкземпляр_объекта равен nil, то выражение возвращаетFalse. Если объявленный класс объектаэкземпляр_объекта не связан с классомимя_класса (т.е. эти классы различны и не являются предком или потомком один другого), то возникает ошибка времени выполнения.

Оператор asвыполняет приведение типа с одновременной проверкой. Это значит, что операторэкземпляр_объекта as имя_классавозвращает ссылку на этот же объектэкземпляр_объекта, но уже с другим типом — с типомимя_класса. Во время выполненияэкземпляр_объекта должен быть экземпляром классаимя_класса или одного из его потомков либо должен содержать значение nil. В противном случае компьютер генерирует исключение. Как и в случае с оператором is, если объявленный класс объектаэкземпляр_объекта не связан с классомимя_класса, то при выполнении оператора as возникает ошибка времени выполнения.

Соседние файлы в папке разработка и стандартизация