ВУЗ:
Составители:
Рубрика:
5
fOne : integer;
fTwo : string;
fThree : tObject;
function FirstFunc(x : real) : real;
procedure SecondProc;
end;
Заголовки методов при описании их реализации повторяют заго-
ловки в описании типа , но дополняются именем класса , которое отде-
ляется от имени процедуры точкой. Например:
procedure tPerson.SecondProc;
Для того чтобы обратиться к методам, также необходимо исполь-
зовать составные имена:
var MyObj : tPerson; y : real;
begin
………………………………
MyObj.SecondProc;
y := MyObj.FirstFunc(3.14);
……………………………….
end;
Методы, определённые в классе, могут быть статическими, вирту-
альными, динамическими или абстрактными. Тип метода определяется
механизмом перекрытия его в потомках.
Для статических методов перекрытие осуществляется компилято-
ром. Например, пусть у нас имеется описание родительского класса
tBase и его потомка tStudent, содержащих одноимённый метод Cnt:
type tBase = class
procedure Cnt;
end;
tStudent = class(tBase)
procedure Cnt;
end;
var Obj1 : tBase; Obj2 : tStudent;
begin
………………………………..
Obj1.Cnt;
Obj2.Cnt;
………………………………..
end;
В соответствии с принципом полиморфизма в операторе
Obj1.Cnt; вызывается метод , описанный в классе tBase , а в операторе
Obj2.Cnt; вызывается метод , описанный в классе tStudent. По умолча -
нию все методы, описанные в классе, являются статическими.
Динамические и виртуальные методы отличаются от статических
тем , что замещение родительских методов происходит на этапе вы-
полнения программы. Для объявления виртуального метода в роди-
5
fOne : integer;
fTwo : string;
fThree : tObject;
function FirstFunc(x : real) : real;
procedure SecondProc;
end;
З а головки м етод ов при описа н ии их реа лиза ции повторя ю т за го-
ловки в описа н ии т ипа , н о д ополн я ю тся им ен ем кла сса , кот орое от д е-
ля ется от им ен и процед у ры т очкой. Н а прим ер:
procedure tPerson.SecondProc;
Д ля того чт об ы об ра т ит ься к м ет од а м , т а кж е н еоб ход им о исполь-
зова т ь сост а вн ые им ен а :
var MyObj : tPerson; y : real;
begin
… … … … … … … … … … … …
MyObj.SecondProc;
y := MyObj.FirstFunc(3.14);
… … … … … … … … … … … … .
end;
М ет од ы, опред елён н ые в кла ссе, м огу т б ыт ь ст а тическим и, вирт у -
а льн ым и, д ин а м ическим и или а б стра кт н ым и. Т ип м етод а опред еля ет ся
м еха н изм ом перекрыт ия его в пот ом ка х.
Д ля ст а т ических м ет од ов перекрытие осу щест вля ет ся ком пиля то-
ром . Н а прим ер, пу ст ь у н а с им еется описа н ие род ит ельского кла сса
tBase и его пот ом ка tStudent, сод ерж а щих од н оим ён н ый м етод Cnt:
type tBase = class
procedure Cnt;
end;
tStudent = class(tBase)
procedure Cnt;
end;
var Obj1 : tBase; Obj2 : tStudent;
begin
… … … … … … … … … … … … ..
Obj1.Cnt;
Obj2.Cnt;
… … … … … … … … … … … … ..
end;
В соот вет ст вии с прин ципом полим орф изм а в опера торе
Obj1.Cnt; вызыва ется м ет од , описа н н ый в кла ссе tBase , а в опера т оре
Obj2.Cnt; вызыва ется м ет од , описа н н ый в кла ссе tStudent. По у м олча -
н ию все м етод ы, описа н н ые в кла ссе, я вля ю т ся ста т ическим и.
Д ин а м ические и вирт у а льн ые м етод ы отлича ю т ся от ст а т ических
т ем , чт о за м ещен ие род ит ельских м ет од ов происход ит н а э т а пе вы-
полн ен ия програ м м ы. Д ля об ъя влен ия вирт у а льн ого м ет од а в род и-
Страницы
- « первая
- ‹ предыдущая
- …
- 3
- 4
- 5
- 6
- 7
- …
- следующая ›
- последняя »
