罗
罗子
Unregistered / Unconfirmed
GUEST, unregistred user!
1. 如何理解"虚方法" 这个词?
我在一本中看到一个很不明确的概念,说虚方法是没有过程(函数体)的方法.
我知道这样的说法是错误的.因为我验证过了,在一个有过程体的方法的称明之后加上 virtual 并没有错.如:以下代码可以正确通过编译.
TMammal=class
public
procedure GiveBirth ;virtual;
end;
implementation
procedure Tmammal.GiveBirth;
begin
showmessage('出生方式');
end;
2. "声明了虚方法,就意味着某个时候该类被子类化,而方法在子类中被重载.只有在
某个祖先中声明的虚方法才能进行重载"这句话好像也是错误的.
TMammal=class
public
procedure GiveBirth ;
end;
TEggLayingMammal=class(Tmammal)
private
procedure LayEggs;
public
procedure GiveBirth;
end;
implementation
procedure Tmammal.GiveBirth;
begin
showmessage('出生方式');
end;
procedure TeggLayingMammal.LayEggs;
begin
showmessage('Laying Eggs');
end;
procedure TeggLayingMammal.GiveBirth;
begin
layeggs;
end;
//以上Tmammal的GiveBirth 并没有 virtual 指令.借一切正常运行.加上了Virtual 也一样运行.可能是我对重载的概念不清楚吧(从VB到Delphi6的)
请对以上的两个问题说说你的看法.
我在一本中看到一个很不明确的概念,说虚方法是没有过程(函数体)的方法.
我知道这样的说法是错误的.因为我验证过了,在一个有过程体的方法的称明之后加上 virtual 并没有错.如:以下代码可以正确通过编译.
TMammal=class
public
procedure GiveBirth ;virtual;
end;
implementation
procedure Tmammal.GiveBirth;
begin
showmessage('出生方式');
end;
2. "声明了虚方法,就意味着某个时候该类被子类化,而方法在子类中被重载.只有在
某个祖先中声明的虚方法才能进行重载"这句话好像也是错误的.
TMammal=class
public
procedure GiveBirth ;
end;
TEggLayingMammal=class(Tmammal)
private
procedure LayEggs;
public
procedure GiveBirth;
end;
implementation
procedure Tmammal.GiveBirth;
begin
showmessage('出生方式');
end;
procedure TeggLayingMammal.LayEggs;
begin
showmessage('Laying Eggs');
end;
procedure TeggLayingMammal.GiveBirth;
begin
layeggs;
end;
//以上Tmammal的GiveBirth 并没有 virtual 指令.借一切正常运行.加上了Virtual 也一样运行.可能是我对重载的概念不清楚吧(从VB到Delphi6的)
请对以上的两个问题说说你的看法.