[转]Delphi继承、属性、重载
1. 继承
类名称 = class(父类名称)
public
<公共类元素>
private
<私有类元素>
protected
<保护类元素>
published
<可显类元素>
End;
Tobject是其他所有类的最终祖先,因此如果类在声明中没有指定父类,那默认为Tobject
如果有构造方法和析构方法,请放置在公共类型中,析构方法后要放override
在基类中的方法定义后加有virtual形式时,子类定义同名方法加override,此时称之为覆盖。
保留字inherited
n 后跟一个成员名称,表示在封装了方法的类的直接祖先中搜寻成员之外,还可以表示标准方法的调用或对属性、域的引用。
n 反之,只表示对当前定义声明封装的方法在所属类的直接祖先中同名方法的调用
2. 虚拟方法与动态方法
加有关键字virtual 的方法称为虚拟方法,关键字dynamic的方法称为动态方法。两者都可以被覆盖。
3. Reintroduce再引入
用于防止编译器关于隐藏先前的虚拟方法给出警告,
你在写子类时,新声明了一个跟父类中已有的方法同名的方法,这样编译器将会自动
对父类该方法进行隐藏!当父类中的方法为普通静态方法时,无所谓的,你只要在子类中直接声明定义你的同名方法即可,编译器对于这种隐藏不会有什么反应!但是,当父类中该方法为虚拟或动态方法时,你在子类中所声明并定义的同名方法,编译器将会报警说你隐藏了基类中的同名虚拟方法!所以,假如你确定要这么做,而又不想让编译器进行报警的话,就要用到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:非简单属性类型)