type
TForm1 = class(TForm) { FontDialog1: TFontDialog;
btnUndo: TButton;
btnSet: TButton;
Memo1: TMemo; //类的合成
procedure btnSetClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnUndoClick(Sender: TObject);
}
private
FOriginalFont:TFont;
public
{ Public declarations }
end;
TForm1 = class(TForm) { FontDialog1: TFontDialog;
btnUndo: TButton;
btnSet: TButton;
Memo1: TMemo; //类的合成
procedure btnSetClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnUndoClick(Sender: TObject);
}
private
FOriginalFont:TFont;
public
{ Public declarations }
end;
对父类该方法进行隐藏!当父类中的方法为普通静态方法时,无所谓的,你只要在子类中直接声明定义你的同名方法即可,编译器对于这种隐藏不会有什么反应!但是,当父类中该方法为虚拟或动态方法时,你在子类中所声明并定义的同名方法,编译器将会报警说你隐藏了基类中的同名虚拟方法!所以,假如你确定要这么做,而又不想让编译器进行报警的话,就要用到reintroduce,说白了,它的用法就是去镇压编译器的报警的!4. overload重载方法(在Reintroduce基础上),该方法重载了继承得到的方法而没有对其隐藏,调用子类中的方法是根据给出的参数来决定哪个方法被激活。5. 抽象类abstract 只有类中有一个抽象方法,那么该类就是抽象类。 抽象方法的定义:procedure[function] 方法名(参数表);virtual;abstract;说明:抽象方法的前提该方法必需是一个虚拟方法,不同之处在于,抽象方法只是定义,并不进行任何实现,而是由子类实现覆盖的地方进行实现。6. 属性1) 说明:属性是与对象相关的数据的接口,具有访问说明符,用来决定如何读取和修改属性的数据。2) 定义:Property 属性名:类型①[Read/数据域/方法/]②[Write/数据域/方法/]③[Stored/True/False/方法/]④[Default缺省值;]1. 四部分为可选,如果没有,表明继承父类的属性。2. 有①无②表明该属性为只读3. 有②无①表明该属性为只写4. ③表示窗体设计时设定的属笥值是否存储在DFM文件中5. ④初始化数据域,没有时缺省值为0属性与变量的关系; 设置属性,其相当于声明了一个公共的变量。属性是控件对外发部的接口,而变量是控件实际运行时属性存取数据的地方。 获得属性通过定义一个函数得到相应的反回值,写属性通过定义一个过程对其变量进行赋值。格式如下: Function 读函数名:非简单属性类型 Proceture 写过程名(Value:非简单属性类型)
Delphi支持的继承规则是:
父类的Public子类和其它可以访问;
父类的protected只有子类可以访问;
父类的Private子类和其它都不能访问(特殊情况:如果两个类在同一个文件中,一个类可以访问另一个类中的Private)。