1-相关对象的多态性是通过继承实现的,不相关对象的多态性是根据接口实现的;
2-实例设计
一个简单工厂工资的实例
1)分为5个单元和1个窗体
5个单元分别为:UntPerson;UntBoss;UntEmployee;UntPieceWorker; UntHourlyWorker;
(基类是UntPerson,其它都继承自基类)
1个窗体里面含 :1个listbox控件和1个button按钮
2) 目的:薪资计算是在基类里面的一个抽象虚方法,子类分别实现它
利用多态思想 分别计算:老板、普通雇员、计件工、小时工的工资
3-窗体展示
4-结果展示[
5-代码展示
1)UntPerson;
unit UntPerson;
interface
type
TPerson=class
private
FName:string; //定义私有成员
public //公共方法
constructor Create(NameValue:string); //构造器 (传入一个string类型的参数)
function Earnings:Real; virtual;abstract; //定义一个名字为收入的函数, 返回实数 ,抽象的方法只能由子类实现
property Name:string read FName write FName;
end;
implementation
{
TPerson }
constructor TPerson.Create(NameValue: string);
begin
FName:=NameValue; //传值,将名为 NameValue 的参数传入
end;
end.
2)UntBoss
unit UntBoss;
interface
uses
UntPerson;
type
TBoss=class(TPerson)
private
FSalary:Real;
public
constructor Create(NameValue:string;SalaryValue:Real);
function Earnings:Real;override;
property WeeklySalary:Real read FSalary write FSalary;
end;
implementation
{
TBoss }
constructor TBoss.Create(NameValue: string; SalaryValue: Real);
begin
inherited Create(NameValue); //调用父类的构造器
WeeklySalary:=SalaryValue;