1.类的继承
继承类的定义
对于子类与父类的使用与一般类的调用并没有特殊的区别,这里不再详述。在子类中,如果需要调用父类的方法,可以利用inherited指示字:
c
2.类的封装
待补充。。。
3.类的多态性
多态是同一个方法在不同的对象里会有不同的实现。在定义类的多态的时候需要在父类创建虚方法,并在子类重写该方法。
这里我们可以看到,对父类对象引用子类对象进行初始化,这也充分体现了类的多态性。
4.抽象类
用class abstract说明抽象类,但内部必须有抽象方法。例如
类中数据成员的排列顺序一般是:字段、方法、属性。
5.类的向前声明
例如:
继承类的定义
{父类}
TBase = class
procedure msg1;
end;
{继承父类}
TChild = class(TBase)
procedure msg2;
end;
对于子类与父类的使用与一般类的调用并没有特殊的区别,这里不再详述。在子类中,如果需要调用父类的方法,可以利用inherited指示字:
c
procedure TChild1.Proc;
begin
inherited Proc; {调用父类的 Proc 方法}
end;
2.类的封装
待补充。。。
3.类的多态性
多态是同一个方法在不同的对象里会有不同的实现。在定义类的多态的时候需要在父类创建虚方法,并在子类重写该方法。
{父类}
TBase = class
procedure alert;virtual; //定义一个虚方法
end;
{子类1}
TChild1 = class(TBase)
procedure alert;override; //重载父类方法
end;
{子类2}
TChild2 = class(TBase)
procedure alert;override;
end;
以下是对于类的调用
{调用父类的方法}
procedure TForm2.Button1Click(Sender: TObject);
var
base : TBase;
begin
base := TBase.Create;
base.alert;
base.Free;
end;
{调用子类1的方法}
procedure TForm2.Button2Click(Sender: TObject);
var
base : TBase;
begin
base := TChild1.Create;
base.alert;
base.Free;
end;
这里我们可以看到,对父类对象引用子类对象进行初始化,这也充分体现了类的多态性。
4.抽象类
用class abstract说明抽象类,但内部必须有抽象方法。例如
TMyClass5 = class abstract(TObject)
procedure Proc; virtual; abstract;
end;
类中数据成员的排列顺序一般是:字段、方法、属性。
5.类的向前声明
例如:
//解决方案 - 向前声明
TClassB = class; {向前声明}
TClassA = class
Field1: string;
Field2: Integer;
Field3: TClassB;
end;
TClassB = class
Field1: string;
Field2: Integer;
end;