1覆盖(overriding)与隐藏(hiding)的差别type
 2覆盖(overriding)与隐藏(hiding)的差别  TOldDog = class(TDog)
 3覆盖(overriding)与隐藏(hiding)的差别  public
 4覆盖(overriding)与隐藏(hiding)的差别  PROCEDURE Bark(Timens: Integer);OVERRIDE;   //子类  TOldDog覆盖父类TDog方法 Bark
 5覆盖(overriding)与隐藏(hiding)的差别  //变量个数必须对应,但每个变量名可以不与父类方法一样
 6覆盖(overriding)与隐藏(hiding)的差别    { Public declarations }
 7覆盖(overriding)与隐藏(hiding)的差别  end;
 8覆盖(overriding)与隐藏(hiding)的差别type
 9覆盖(overriding)与隐藏(hiding)的差别  TLittleDog = class(TDog)
10覆盖(overriding)与隐藏(hiding)的差别  public
11覆盖(overriding)与隐藏(hiding)的差别  PROCEDURE Barkm;
12覆盖(overriding)与隐藏(hiding)的差别//[Warning] : Method 'Bark' hides virtual method of base type 'TDog'
13覆盖(overriding)与隐藏(hiding)的差别//这是子类重新定义,跟父类的Bark无任何关系,所以会把父类的Bark方法隐藏(Hiding)
14覆盖(overriding)与隐藏(hiding)的差别//若其后加reintroduce修饰符可去除编译的警告
15覆盖(overriding)与隐藏(hiding)的差别//[Warning] Unit1.pas(31): Method 'Bark' hides virtual method of base type 'TDog'
16覆盖(overriding)与隐藏(hiding)的差别    { Public declarations }
17覆盖(overriding)与隐藏(hiding)的差别  end;
18覆盖(overriding)与隐藏(hiding)的差别PROCEDURE TLittleDog.Barkm;//TLittleDog的Bark方法的实现
19覆盖(overriding)与隐藏(hiding)的差别BEGIN
20覆盖(overriding)与隐藏(hiding)的差别  ShowMessage('嗷嗷~~~邀邀');
21覆盖(overriding)与隐藏(hiding)的差别end;
22覆盖(overriding)与隐藏(hiding)的差别
23覆盖(overriding)与隐藏(hiding)的差别PROCEDURE TOldDog.Bark(Timens: Integer); //TOldDog的Bark方法的实现
24覆盖(overriding)与隐藏(hiding)的差别BEGIN
25覆盖(overriding)与隐藏(hiding)的差别  ShowMessage('嗷~~~呜~~~' + #13 + #13 +' 给我 ' + IntToStr(Timens) + ' 根骨头');
26覆盖(overriding)与隐藏(hiding)的差别end;
27覆盖(overriding)与隐藏(hiding)的差别
28覆盖(overriding)与隐藏(hiding)的差别PROCEDURE TDog.Bark(Times: Integer);  //TDog的Bark方法的实现
29覆盖(overriding)与隐藏(hiding)的差别VAR
30覆盖(overriding)与隐藏(hiding)的差别  i: Integer;
31覆盖(overriding)与隐藏(hiding)的差别BEGIN
32覆盖(overriding)与隐藏(hiding)的差别  i := Times;
33覆盖(overriding)与隐藏(hiding)的差别  IF i > 5 THEN
34覆盖(overriding)与隐藏(hiding)的差别  ShowMessage('没力,叫不出来!')
35覆盖(overriding)与隐藏(hiding)的差别  else
36覆盖(overriding)与隐藏(hiding)的差别   FOR I := 1 TO Times  DO    // Iterate
37覆盖(overriding)与隐藏(hiding)的差别     ShowMessage('汪~~ 第 ' + IntToStr(i) + ' 声');
38覆盖(overriding)与隐藏(hiding)的差别   // for
39覆盖(overriding)与隐藏(hiding)的差别end;
40覆盖(overriding)与隐藏(hiding)的差别
41覆盖(overriding)与隐藏(hiding)的差别procedure TForm1.Button1Click(Sender: TObject);
42覆盖(overriding)与隐藏(hiding)的差别VAR
43覆盖(overriding)与隐藏(hiding)的差别  SmallWhite: TDog;
44覆盖(overriding)与隐藏(hiding)的差别  bkTimes: Integer;
45覆盖(overriding)与隐藏(hiding)的差别begin
46覆盖(overriding)与隐藏(hiding)的差别   SmallWhite := TDog.Create;   //建立TDog的对象
47覆盖(overriding)与隐藏(hiding)的差别   SmallWhite.Name := '小白';
48覆盖(overriding)与隐藏(hiding)的差别   Edit1.Text := '狗狗叫做 ' + SmallWhite.Name;
49覆盖(overriding)与隐藏(hiding)的差别   bkTimes := StrToInt(InputBox('要 ' + SmallWhite.Name + '叫几声?''输入次数(限整数)''3'));
50覆盖(overriding)与隐藏(hiding)的差别   SmallWhite.Bark(bkTimes);  //调用的是TDog的Bark方法
51覆盖(overriding)与隐藏(hiding)的差别   SmallWhite.Free;           //析构TDog的对象
52覆盖(overriding)与隐藏(hiding)的差别end;
53覆盖(overriding)与隐藏(hiding)的差别
54覆盖(overriding)与隐藏(hiding)的差别procedure TForm1.Button2Click(Sender: TObject);
55覆盖(overriding)与隐藏(hiding)的差别VAR
56覆盖(overriding)与隐藏(hiding)的差别  OldBlack: TOldDog;
57覆盖(overriding)与隐藏(hiding)的差别begin
58覆盖(overriding)与隐藏(hiding)的差别   OldBlack := TOldDog.Create;   //建立TOldDog的对象
59覆盖(overriding)与隐藏(hiding)的差别   OldBlack.Name := '老黑';
60覆盖(overriding)与隐藏(hiding)的差别   Edit1.Text := '老狗叫做 ' + OldBlack.Name;
61覆盖(overriding)与隐藏(hiding)的差别   OldBlack.Bark(6);    //调用的是TOldDog覆盖后的Bark方法
62覆盖(overriding)与隐藏(hiding)的差别   OldBlack.Free;      //析构TOldDog的对象
63覆盖(overriding)与隐藏(hiding)的差别end;
64覆盖(overriding)与隐藏(hiding)的差别
65覆盖(overriding)与隐藏(hiding)的差别procedure TForm1.Button3Click(Sender: TObject);
66覆盖(overriding)与隐藏(hiding)的差别VAR
67覆盖(overriding)与隐藏(hiding)的差别  Spot: TLittleDog;
68覆盖(overriding)与隐藏(hiding)的差别begin
69覆盖(overriding)与隐藏(hiding)的差别   Spot := TLittleDog.Create;  //建立TLittleDog的对象
70覆盖(overriding)与隐藏(hiding)的差别   Spot.Name := '小花';
71覆盖(overriding)与隐藏(hiding)的差别   Edit1.Text := '小狗叫做 ' + Spot.Name;
72覆盖(overriding)与隐藏(hiding)的差别   Spot.Barkm;      //调用的是TLittleDog重新定义的Bark方法
73覆盖(overriding)与隐藏(hiding)的差别   Spot.Free;      //析构TLittleDog的对象
74覆盖(overriding)与隐藏(hiding)的差别end;
75覆盖(overriding)与隐藏(hiding)的差别
76覆盖(overriding)与隐藏(hiding)的差别procedure TForm1.Button4Click(Sender: TObject);
77覆盖(overriding)与隐藏(hiding)的差别VAR
78覆盖(overriding)与隐藏(hiding)的差别  aDog: TDog;   //定义为TDog类的对象变量 
79覆盖(overriding)与隐藏(hiding)的差别begin
80覆盖(overriding)与隐藏(hiding)的差别   aDog := TOldDog.Create;   //用子类TOldDog建立父类TDog的对象
81覆盖(overriding)与隐藏(hiding)的差别   Label1.Caption := 'aDog 参考ToldDog对象';
82覆盖(overriding)与隐藏(hiding)的差别   aDog.Bark(2);  //调用的是TOldDog的Bark方法
83覆盖(overriding)与隐藏(hiding)的差别   aDog.Free;           //析构TOldDog的对象
84覆盖(overriding)与隐藏(hiding)的差别
85覆盖(overriding)与隐藏(hiding)的差别   aDog := TLittleDog.Create;   //用子类TLittleDog建立父类TDog的对象
86覆盖(overriding)与隐藏(hiding)的差别   Label1.Caption := 'aDog 参考TLittleDog对象';
87覆盖(overriding)与隐藏(hiding)的差别   aDog.Bark(2); //调用的是父类TDog的Bark方法
88覆盖(overriding)与隐藏(hiding)的差别 //  aDog.Barkm;  //无法Bind(绑定到)TLittleDog的Bark方法 , 因为跟 父类TDog无任何关系.
89覆盖(overriding)与隐藏(hiding)的差别   aDog.Free;           //析构TDog的对象
90覆盖(overriding)与隐藏(hiding)的差别
91覆盖(overriding)与隐藏(hiding)的差别end;
92覆盖(overriding)与隐藏(hiding)的差别
93覆盖(overriding)与隐藏(hiding)的差别

相关文章:

  • 2021-12-30
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-16
猜你喜欢
  • 2021-07-27
  • 2022-12-23
  • 2021-07-30
  • 2022-12-23
  • 2022-12-23
  • 2021-09-07
  • 2021-06-29
相关资源
相似解决方案