Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Dispose(P, Done);



End;

Именно здесь мы впервые рассмотрели возможность с помощью одной и той же переменной получить доступ к объектам различных классов. Действительно, в зависимости от хода алгоритма указателю P может быть присвоено значение адреса как объекта класса Class4, так и адреса объекта класса-наследника от Class4.

Перекрытие методов

Перекрыть метод предка в классе наследнике очень просто: следует продекларировать метод с тем же именем.

Type

Class5 = Object(Class1)

Procedure Nothing;

End;

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

Выводы

Итак, в Borland Pascal v.7.0 реализованы все три основных принципа ООП и частично - механизм позднего связывания (он работает только при использовании указателей). Невозможность полной реализации связана с тем, что типы статических объектов (переменных) на языке Паскаль определяются до выполнения программы, фактически еще до ее компиляции. Естественно, что для объектов предопределенного типа (класса) нет смысла применять механизм определения типа и вызова соответствующего метода (т. e. механизм позднего связывания).

Это явное несоответствие, вероятно, связано с неустоявшейся терминологией в ООП на момент разработки синтаксиса. В более поздних реализациях Паскаля для этой цели явно используется ключевое слово class.





Дата публикования: 2014-10-25; Прочитано: 285 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...