静态方法,虚方法和动态方法

(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.
方法调用
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

 

posted @ 2011-08-24 14:47  Jasmines  阅读(287)  评论(0)    收藏  举报