ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »