1
unit Unit1;
2
3
interface
4
5
type
6
TForm1 = class(TForm)
7
Button1: TButton;
8
Button2: TButton;
9
procedure Button1Click(Sender: TObject);
10
procedure Button2Click(Sender: TObject);
11
private
12
{ Private declarations }
13
public
14
{ Public declarations }
15
end;
16
17
implementation
18
uses
19
Person, ET; //引用自定义的两个类
20
procedure TForm1.Button1Click(Sender: TObject);
21
VAR
22
tulater: TPerson;
23
begin
24
tulater := TPerson.Create; //Blood此时初始化为'O'
25
tulater.myName := '涂磊';
26
tulater.High := 156;
27
//tulater.DNA := 'asdfwefkooj3249rrj9';
28
//上面一行错://Protected属性在此单元内(属性定义的单元)和子类属性定义的单元内可见 和直接访问使用 DNA
29
30
tulater.setDNA('asdfwefkooj3249rrj9');
31
//只能以上面方法间接访问Protected属性,通过public的方法
32
// tulater.Blood := 'O';
33
//上面一行错://Private属性只在Blood属性定义的单元内可见,和直接访问使用 Blood
34
ShowMessage(tulater.myName + #13#10 + '身高= ' + IntToStr(tulater.High) + #13#10 + '血型= ' + tulater.getBlood
35
+ #13#10 + 'DNA= ' + tulater.getDNA);
36
tulater.Free;
37
end;
38
39
procedure TForm1.Button2Click(Sender: TObject);
40
VAR
41
ETfish: TET;
42
begin
43
ETfish := TET.Create;
44
ETfish.myName := '外星鱼';
45
ETfish.High := 15;
46
//ETfish.DNA := 'asdfwe$%#%#%%Q#%%#%24#9rrj9';
47
ETfish.setDNA('asdfwe$%#%#%%Q#%%#%24#9rrj9');
48
// ETfish.Blood := 'O';
49
ShowMessage(ETfish.myName + #13#10 + '身高= ' + IntToStr(ETfish.High) + #13#10 +
50
'血型= ' + ETfish.getBlood + #13#10 +
51
'DNA= ' + ETfish.getDNA + #13#10 +
52
'UFOSpeed= ' + IntToStr(ETfish.getUFOSpeed) ) ;
53
ShowMessage('初始化时 UFOSpeed=' + IntToStr(ETfish.getUFOSpeed));
54
ETfish.setUFOSpeed(41458174);
55
ShowMessage('现在 UFOSpeed=' + IntToStr(ETfish.getUFOSpeed));
56
57
ETfish.Free;
58
end;
59
60
end.
61
62

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

1
unit ET; //TET类声明所在单元
2
interface
3
uses
4
CLASSES,Dialogs,Person;
5
TYPE
6
TET = CLASS(TPerson) //完全继承Person所有的属性和方法
7
private //加入子类新的属性和方法
8
UFOSpeed: Integer;
9
{ Private declarations }
10
public
11
CONSTRUCTOR Create;
12
PROCEDURE setUFOSpeed(aSpeed: Longword);
13
FUNCTION getUFOSpeed: Longword;
14
{ Public declarations }
15
end;
16
implementation
17
18
FUNCTION TET.getUFOSpeed: Longword;
19
BEGIN
20
result := self.UFOSpeed; //读取Private 成员的值
21
end;
22
23
PROCEDURE TET.setUFOSpeed(aSpeed: Longword);
24
BEGIN
25
self.UFOSpeed := aSpeed; //以参数设定Private 成员的值
26
end;
27
28
CONSTRUCTOR TET.Create;
29
BEGIN
30
INHERITED Create; //调用直接父类Tperson的Create方法// ShowMessage('Tperson.Create 执行');
31
ShowMessage('TET.Create 执行');
32
Self.UFOSpeed := 300000000; //Private属性只在属性定义的单元内可见,只可以在这里这样直接访问使用 UFOSpeed
33
end;
34
VAR //为测试而设置此区
35
AET : TET;
36
BEGIN
37
AET := TET.Create;
38
AET.DNA := 'fdsafsrfwefsd$#^^3';//父类的Protected属性在子类单元(本单元)内可见 ,在这里这样直接访问使用
39
//AET.Blood := 'A'; //父类的Private属性在子类单元(本单元)内不可见(只在其属性定义的单元内可见) ,在这里这样不能直接访问使用
40
ShowMessage('AET.DNA = ' + AET.DNA );
41
AET.Free;
42
end.
43
end.
44
45

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45
