静态方法,虚方法和动态方法
(1)虚方法和动态方法一样:
它的结果只和谁创建它有关系,和其它转换没有关系;
(2)静态方法
和它的当前类型有关系
1 类方法
2 type
3 TClassA = class
4 public
5 function AAA():string;virtual;//虚方法
6 function BBB():string; //静态方法
7 end;
8
9 TClassB=class(TClassA)
10 public
11 function AAA():string;override;//重写
12 function BBB():string;
13 end;
14
15
16 implementation
17
18 { TClassA }
19
20 function TClassA.AAA: string;
21 begin
22 result:= 'TCLassA.AAA';
23 end;
24
25 function TClassA.BBB: string;
26 begin
27 result:= 'TClassA.BBB';
28 end;
29
30 { TClassB }
31
32 function TClassB.AAA: string;
33 begin
34 result:= 'TClassB.AAA';
35 end;
36
37 function TClassB.BBB: string;
38 begin
39 result:= 'TClassB.BBB';
40 end;
41
42 end.
2 type
3 TClassA = class
4 public
5 function AAA():string;virtual;//虚方法
6 function BBB():string; //静态方法
7 end;
8
9 TClassB=class(TClassA)
10 public
11 function AAA():string;override;//重写
12 function BBB():string;
13 end;
14
15
16 implementation
17
18 { TClassA }
19
20 function TClassA.AAA: string;
21 begin
22 result:= 'TCLassA.AAA';
23 end;
24
25 function TClassA.BBB: string;
26 begin
27 result:= 'TClassA.BBB';
28 end;
29
30 { TClassB }
31
32 function TClassB.AAA: string;
33 begin
34 result:= 'TClassB.AAA';
35 end;
36
37 function TClassB.BBB: string;
38 begin
39 result:= 'TClassB.BBB';
40 end;
41
42 end.
方法调用
var
Form1: TForm1;
a:TClassA;
b:TClassB;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
begin
a:= TClassA.Create;
Self.mmo1.Text:= Self.mmo1.Text+a.AAA+#13#10;
Self.mmo1.Text:= Self.mmo1.Text+a.BBB+#13#10;
Self.mmo1.Text:=Self.mmo1.Text+TClassB(a).AAA+#13#10;
Self.mmo1.Text:=Self.mmo1.Text+TClassB(a).BBB+#13#10;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
a:= TClassB.Create;
Self.mmo1.Text:= Self.mmo1.Text+a.AAA+#13#10;
Self.mmo1.Text:= Self.mmo1.Text+a.BBB+#13#10;
Self.mmo1.Text:=Self.mmo1.Text+TClassA(a).AAA+#13#10;
Self.mmo1.Text:=Self.mmo1.Text+TClassA(a).BBB+#13#10;
end;
procedure TForm1.btn3Click(Sender: TObject);
begin
b:= TClassB.Create;
Self.mmo1.Text:= Self.mmo1.Text+b.AAA+#13#10;
Self.mmo1.Text:= Self.mmo1.Text+b.BBB+#13#10;
Self.mmo1.Text:=Self.mmo1.Text+TClassA(b).AAA+#13#10;
Self.mmo1.Text:=Self.mmo1.Text+TClassA(b).BBB+#13#10;
end;
end.
var
Form1: TForm1;
a:TClassA;
b:TClassB;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
begin
a:= TClassA.Create;
Self.mmo1.Text:= Self.mmo1.Text+a.AAA+#13#10;
Self.mmo1.Text:= Self.mmo1.Text+a.BBB+#13#10;
Self.mmo1.Text:=Self.mmo1.Text+TClassB(a).AAA+#13#10;
Self.mmo1.Text:=Self.mmo1.Text+TClassB(a).BBB+#13#10;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
a:= TClassB.Create;
Self.mmo1.Text:= Self.mmo1.Text+a.AAA+#13#10;
Self.mmo1.Text:= Self.mmo1.Text+a.BBB+#13#10;
Self.mmo1.Text:=Self.mmo1.Text+TClassA(a).AAA+#13#10;
Self.mmo1.Text:=Self.mmo1.Text+TClassA(a).BBB+#13#10;
end;
procedure TForm1.btn3Click(Sender: TObject);
begin
b:= TClassB.Create;
Self.mmo1.Text:= Self.mmo1.Text+b.AAA+#13#10;
Self.mmo1.Text:= Self.mmo1.Text+b.BBB+#13#10;
Self.mmo1.Text:=Self.mmo1.Text+TClassA(b).AAA+#13#10;
Self.mmo1.Text:=Self.mmo1.Text+TClassA(b).BBB+#13#10;
end;
end.
执行结果分别为:
1. TCLassA.AAA
TClassA.BBB
TCLassA.AAA
TClassB.BBB
2.TClassB.AAA
TClassA.BBB
TClassB.AAA
TClassA.BBB
3.TClassA.BBB
TClassB.AAA
TClassB.BBB
TClassB.AAA
1. TCLassA.AAA
TClassA.BBB
TCLassA.AAA
TClassB.BBB
2.TClassB.AAA
TClassA.BBB
TClassB.AAA
TClassA.BBB
3.TClassA.BBB
TClassB.AAA
TClassB.BBB
TClassB.AAA
浙公网安备 33010602011771号