请问一个继承的问题(0分)

  • 主题发起人 主题发起人 awfigsk
  • 开始时间 开始时间
A

awfigsk

Unregistered / Unconfirmed
GUEST, unregistred user!
请教一个继承的问题
type
TPlane=class
protected
...
public
procedure fly();virtual;abstract

function modal():string;dynamic

end


TCopter=class(TPlane)
public
procedure fly();override

function modal():string

end


1、我想请问在派生类fly()函数中重写代码时,是否会将父类的代码覆盖掉?
2、如果不是,那么请问如果要调用父类的方法如何做呢?是否是用inherited ?
而第二函数modal()如果调用父类的modal()函数是用tplane.modal()这样调用吗?
 
这个好像是nicrosoft的例子嘛~~
呵呵
1。代码不会覆盖,只是不引用父类的方法,覆盖了虚方法表
2。可以先写自己的代码。再用inherited。就可以调用父类的方法了。


而第二函数modal()如果调用父类的modal()函数是用tplane.modal()这样调用吗?
shenme yisi ?
 
我是说函数modal()如果要调用父类的modal()代码,是否是用TPlane.modal()来调用?
 
TPlane.modal(),不可以,modal不是类方法~
 
1在派生类fly()函数中重写代码时不会覆盖父类的代码;
2要调用父类的方法,对fly()可以直接调用;对于modal(),只有当这个类的
派生类重载并实现了该方法之后,它才能够被调用;
例如:
在TCopter中重载并实现了方法modal()那么:
var
myplane : TPlane;
begin
myplane:=TCopter.create;
myplane.modal();
 
看错了,重写
1在派生类fly()函数中重写代码时不会覆盖父类的代码;
2要调用父类的方法,对modal()可以直接调用;对于fly(),只有当这个类的
派生类重载并实现了该方法之后,它才能够被调用;
例如:
在TCopter中重载并实现了方法fly()那么:
var
myplane : TPlane;
begin
myplane:=TCopter.create;
myplane.fly();
 
接受答案了.
 
后退
顶部