inherited 使用格式 inherited XXX(ParamsList); 表示使用父类中的名为XXX的方法,ParamList为方法的参数列表;调用时可不加方法名,表示调用父类中同名方法,若父类中有多个同名方法时不可用。 dynamic Dynamic用于声明一个动态的方法, 动态方法可以被覆盖, 并且可以使代码大小尽可能的减少(区别于Virtual),使用DMT,减少空间 procedure X(i: Integer); dynamic; virtual Virtual用于声明一个虚方法, 虚方法可以被覆盖, 并且可以使程序运行速度尽可能的快(区别于Dynamic),使用VMT,减少时间 procedure X(i: Integer); virtual; override //Override用于覆盖一个Virtual或是Dynamic形式的方法. //覆盖时必须沿用被覆盖方法的声明, 并且不允许修改原方法的参数和返回类型. procedure Create(AOwner: TComponent); override; //Override多用于继承, 用子类覆盖掉父类的方法. type TClassA = class procedure X; virtual; end; TClassB = class(TClassA) procedure X; override; end; //如上例, 子类拥有的方法为: procedure X; {从父类覆盖} //父类拥有的方法为: procedure X; {父类自身方法, 未被覆盖} //如果父类的方法未用Virtual或Dynamic声明, //或是有修改参数的需要, 则必须用Reintroduce关键字进行覆盖. overload //Overload关键字指出了用于重载的方法, 重载即方法名相同, //但是参数数量, 类型或顺序不同, 满足此条件的构成重载. function X(i: Integer): string; overload; function X(s: string): string; overload; //从父类继承时, 如果子类拥有和父类相同的方法, 则也必须用overload构成重载, //但是此类重载也必须满足重载的要求. type TDemo = class(TComponent) public procedure CreateWnd(AOwner: TWinControl); overload; end; //如上例, 子类拥有的方法为: procedure CreateWnd; {继承自父类} procedure CreateWnd(AOwner: TWinControl); {子类声明} //共两个CreateWnd方法. //如果不使用重载, 则在子类中可以覆盖父类的方法.