通过覆盖一个方法可以实现OOP的多态性的概念。通过覆盖方法可以在不同的实现类中有不同的行为。Delphi中能够被覆盖的方法限定为Virtual和Dynamic的方法。为了覆盖一个方法,在派生类中用Override代替上面的标识符。
注意:在声明方法的时候,如果派生类中的方法名没有带Override,但是名称和父类的相同。这个时候派生类中方法和父类中的这个方法都同时存在,没有覆盖父类的方法。
例子如下:
Type
T1 = class
procedure AB; Virtual;
end;
T2 = class(T1)
procedure AB;
end;
Var
Some1: T1;
Some2: T2;
begin
Some1 := T2.Create;
Some1.AB; 调用的是父类T1的方法。
Some2 := T2.Create;
Some1.AB; 调用的是子类T23的方法。
end;