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

Наследование



Pascal не поддерживает множественного наследования, т. е. каждый класс может иметь не более одного наследника. Для того чтобы объявить класс наследником какого-то другого класса, достаточно указать имя класса-предка при объявлении наследника:

Type

Class2 = Object(Class1)

M: Integer;

End;

Var

Object3: Class2;

При таком объявлении объект Object3 обладает тремя полями - A, V, M и одним методом Nothing(Var Byte).

Методы

Методы объектов обладают единственным отличием от обычных процедур (функций): они, собственно, принадлежат объектам. Следовательно, они обладают доступом к полям именно «своего» объекта. Так как объектов в программе может быть множество, то во избежание дублирования кода каждый метод получает в качестве неявного параметра указатель на объект, для которого он вызван. Данный указатель доступен в теле метода как @Self. Естественно, что объявленный (декларированный) при определении класса метод должен быть определен (дефинирован) в программе. Делается это примерно следующим образом:

Procedure Class1.Nothing(Var K: Byte);

Begin

{body of method}

V:= K;

@Self^.V:= K;

End;

Третья и четвертая строки абсолютно идентичны. В сущности, третья является лишь удобным сокращением второй.

Известно, что все методы класса делятся на обычные (статические) и виртуальные. Любой метод считается статическим, если не указано обратное. Указать же, что метод является виртуальным можно, указав после его декларации в дефиниции класса ключевое слово Virtual:

Type

Class3 = Object

Procedure Nothing(Var K: Byte);





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



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