求助

dch4890164 2006-09-04 07:58:37
重载和虚拟方法有什么具体区别,分别什么时候用,保留字inherited具体的含义是什么?怎么用?
...全文
129 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
日总是我哥 2006-09-04
  • 打赏
  • 举报
回复
只有虚拟(virtual)方法或动态(dynamic)方法才可以被重载(override)

type
ClassA = class
protected
function test1: Boolean;virtual;
function test2: Boolean;
function test3: Boolean;dynamic;
end;

ClassB = class(ClassA) //继续自ClassA
protected
function test1: Boolean;override;//正确
function test2: Boolean;override;//错误,父亲的test2方法即不是虚拟方法,也不是动态方法.
function test3: Boolean;override;//正确
end;


inherited表示执行父亲的方法.

function ClassA.test1: Boolean;
begin
ShowMessage('ClassA.test1');
end;

function ClassB.test1: Boolean;
begin
Result := inherited test1(); //执行这一句将显示ShowMessage('ClassA.test1');
//如同C++中的base.test1();
end;

CSDN论坛浏览器:浏览、发帖、回复、结贴自动平均给分,下载地址:http://CoolSlob.ys168.com
wudi_1982 2006-09-04
  • 打赏
  • 举报
回复
到google中搜索一下吧,无数个。

OO_is_just_P 2006-09-04
  • 打赏
  • 举报
回复
楼主下载一个电子版的书,基本讲OOP的书都讲这些。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧