一个人的基类
2、基类的方法具有static、virtual、dynamic、message
}
unit Unit1;
interface
uses
SysUtils;
type
//定义一个表示性别的枚举类型
TGender=(Male,Female);
//定义一个表示国籍的枚举类型
TNation=(China,England,American);
//定义一个表示学历的枚举类型
TEducation=(Primary,Junior,Senior,University);
//定义一个职业的枚举类型
TProfession=(Unemployment,Teachar,Docotor,Lawyer,Firefight);
//****************************************************
// 定义一个人的类
// 1、人的属性 --- 域
// 性别、姓名、身高、体重、国籍、学历等
// 2、人的能力 --- 方法
// 外语、吃饭、打球等
//*****************************************************
TPerson=class
// 域
gender : TGender;
name : shortstring;
height : single;
weight : single;
nationality : TNation;
education : TEducation;
profession: TProfession;
// 方法
//静态方法 静态方法不能被覆盖
procedure eat();
//虚方法 父类的虚方法可以在子类中被覆盖
procedure language(); virtual;
procedure playBall(); virtual;
end;
TTeachar=class(TPerson)
//域
// 方法
{ 方法的覆盖:
1、 通过 override 关键字表示
2、方法的覆盖就是屏蔽父类的同名方法,注意与方法的重载 overload 的
区别
3、
}
procedure language(); override;
procedure playBall(); override;
procedure teaching();
procedure prepareLesson();
procedure testLesson();
end;
implementation
//***********************************************************
// 实现 TPerson类的方法
procedure TPerson.eat();
begin
WriteLn('I can eating.');
end;
procedure TPerson.playBall();
begin
WriteLn('I can play ball.');
end;
procedure TPerson.language();
begin
WriteLn('I can only speak one languave.');
end;
//***********************************************************
// 实现 TTeacher 类的方法
procedure TTeachar.language();
begin
WriteLn('I can speak lot of languave.');
end;
procedure TTeachar.playBall();
begin
WriteLn('I can not play ball.');
end;
procedure TTeachar.teaching();
begin
WriteLn('I am a Chinese teachar.');
end;
procedure TTeachar.prepareLesson();
begin
WriteLn('I am prepare math lesson.');
end;
procedure TTeachar.testLesson();
begin
WriteLn('I am testing English.');
end;
end.
欢迎转载本系列文章,转载请注明来源。
|