- •8. Система PascalAbc.Net
- •9. Принципы объектно-ориентированного программирования.
- •10. Указатели. Ссылочные переменные.
- •15. Переменная Self:
- •11. Понятие класса. Инициализаторы полей:
- •12. Видимость членов класса:
- •13. Конструктор. Деструктор.
- •14. Методы:
- •16. Свойства:
- •17. Наследование:
- •18. Переопределение методов:
- •19. Наследование конструкторов:
- •21. Виртуальные методы и полиморфизм:
- •20. Перегрузка операций:
- •22. Абстрактные методы:
14. Методы:
Методы представляют собой процедуры и функции, объявленные внутри класса или записи. Особыми разновидностями методов являются конструкторы, деструкторы и перегруженные операции.
Определение методов можно давать как внутри класса (стиль Java, C#, C++), так и вне класса (стиль Delphi, C++). При определении метода вне интерфейса класса его имя предваряется именем класса с последующей точкой. Например:
type <имя класса1> = class <описание полей класса>; constructor Create(<параметры>); begin <тело конструктора> end; function <метод1>: integer; end;
function <имя класса1>.<метод1>: integer; begin <тело метода> end;
Методы делятся на классовые и экземплярные. Классовые методы в .NET называются статическими. Объявление классового метода начинается с ключевого слова class. Экземплярные методы можно вызывать только через переменную-объект класса. Классовые же методы не связаны с конкретным экземпляром класса; их следует вызывать в виде:
<имя класса>.<имя метода>(параметры)
Внутри классового метода не может быть обращения к полям класса, а может быть только обращение к другим классовым методам. Напротив, экземплярный метод может вызывать классовый. классовые методы являются разновидностью глобальных подпрограмм, но находятся внутри класса, что подчеркивает, что они осуществляют действия, связанные именно с этим классом. Класс в этом случае выступает только в роли пространства имен.
16. Свойства:
Свойство внешне выглядит как поле класса, однако, при доступе к нему на чтение или запись позволяет выполнять некоторые действия. Свойство описывается в классе следующим образом:
property <имя>: <тип> read <имя функции чтения> write <имя процедуры записи>;
Как правило, каждое свойство связано с некоторым полем класса и возвращает значение этого поля с помощью функции чтения, а меняет - с помощью процедуры записи. Функция чтения и процедура записи должны быть методами этого класса и иметь следующий вид:
function <имя функции чтения>: тип; procedure <имя процедуры записи>(<параметр>: <тип>);
Обычно для доступа к полю на чтение в секции read свойства указывается именно поле, так как обычно при чтении поля никаких дополнительных действий производить не требуется.
Свойства не могут передаваться по ссылке в процедуры и функции.
17. Наследование:
Класс может быть унаследован от другого класса. Класс, от которого наследуют, называют базовым классом (надклассом, предком), а класс, который наследуется, называется производным классом (подклассом, потомком). При наследовании все поля, методы и свойства базового класса переходят в производный класс, кроме этого, могут быть добавлены новые поля, методы и свойства и переопределены (замещены) старые методы.
type
<имя класса1>=class
<описание полей >
function <имя метода1>(<параметры>);
begin
<тело метода>
end;
end;
<имя класса2>=class(<имя класса1>)
<описание полей >
function <имя метода1>(<параметры>);
begin
<тело метода>
end;
procedure <имя метода2>(<параметры>);
begin
<тело метода>
end;
end;
Перед словом class может быть указано ключевое слово final – в этом случае от класса запрещено наследовать.