所谓继承就是一个类(你所写的类)要从另一类派生(所谓的基类),那么此类就拥有了基类的一切属性,方法.但是基类中的private中相应的东东,派生类是没有的. 例 (基类) TA=class private FName:String; FYear:Integer; public procedure SetName(Name:String);
(派生类) TB=class(TA) private FPName:String; public procedure SetName(Name:String);override;//重载基类中的方法 派生类的SetName方法 procedure SetName(Name:String); begin inherited; if FPName<>Name then FPName:=Name; end; 以上全是我刚刚写出来的,比较简单,但可能也有很多错误,希望您能看懂!
是指一个新的对象能够从父对象中获取属性和方法,这种概念能用来建立vcl这样的多层次的对象,首先建立通用对象,然后创建这些通用对象的有专用功能的字对象。继承的好处是能共享代码。 关于多继承:多继承是指一个对象能继承两个不同的对象,并且包含有两个父对象的所有数据和代码。object pascal采用两种方法解决:在一个类中包含其它的类;使用接口。 继承的方法必须是虚拟或是动态方法。在4p中,private中的方法和属性不能被派生类继承,例如; type TQueryThread = class(TThread) protect Constructor Create; public procedure Execute;override;//覆盖基类的方法;此方法在基础类中的声明为virtual类型; end;constructor TQueryThread.Create; begin FreeOnTerminate := True; inherited Create(False);//继承基础类中的方法; end;procedure TQueryThread.Execute; begin do something; end;
例
(基类)
TA=class
private
FName:String;
FYear:Integer;
public
procedure SetName(Name:String);
(派生类)
TB=class(TA)
private
FPName:String;
public
procedure SetName(Name:String);override;//重载基类中的方法 派生类的SetName方法
procedure SetName(Name:String);
begin
inherited;
if FPName<>Name then
FPName:=Name;
end;
以上全是我刚刚写出来的,比较简单,但可能也有很多错误,希望您能看懂!
关于多继承:多继承是指一个对象能继承两个不同的对象,并且包含有两个父对象的所有数据和代码。object pascal采用两种方法解决:在一个类中包含其它的类;使用接口。
继承的方法必须是虚拟或是动态方法。在4p中,private中的方法和属性不能被派生类继承,例如;
type
TQueryThread = class(TThread)
protect
Constructor Create;
public
procedure Execute;override;//覆盖基类的方法;此方法在基础类中的声明为virtual类型;
end;constructor TQueryThread.Create;
begin
FreeOnTerminate := True;
inherited Create(False);//继承基础类中的方法;
end;procedure TQueryThread.Execute;
begin
do something;
end;
...........一定要安装此控件才能用吗??
能不能想VC那样 SubClassWinow ???
比如
form1 有个listview1,
uses mylistview;
能不能象这样
listview1.classname:=tmylistview 啊??我不想装控件。