会者不难的问题:关于interface

forverlove 2006-11-15 12:08:41
type
IFood = interface
['{D68E13A0-852B-4189-ACA3-CEF35314030F}']
function show:string;
function get:string;
end;

TRunable = class(TInterfacedObject,IFood)
function showFood:IFood;
property Foot:IFood read showFood implements IFood;
end;

function TRunable.showFood:IFood;
begin
writeln('Hello');
end;
var
run : TRunable;
begin
{ TODO -oUser -cConsole Main : Insert code here }
run := TRunable.Create;
run.showFood;
readln;
end.
、、、、、、、、、、、、、
在TRunable中并没有实现IFood的show,
甚至没有委托实现get但还是可执行,
这是否能说明implements后,不必将所有接口内方法实现
但到底是Foot这个字段受委托还是showFood受委托了??
...全文
177 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
forverlove 2006-12-05
  • 打赏
  • 举报
回复
前段时间忙,没时间进来结帖,请大家原谅。
forverlove 2006-11-18
  • 打赏
  • 举报
回复
一时间就要找书,小弟没这书,
大家如有电子书请传给我,先谢啦.
shuwu520@sina.com
老冯 2006-11-18
  • 打赏
  • 举报
回复
你还是好好看看李维的《Inside VCL FrameWork》277页-363页吧,李首席讲得透彻得不得了。
forverlove 2006-11-18
  • 打赏
  • 举报
回复
这样该类还算不算对该接口实现?
food := TRunable.create();
加入这句后程序依然正常。
这样的话具体有体现了什么呢?
forverlove 2006-11-15
  • 打赏
  • 举报
回复
但是FOOT并没有实现show,
这是不是说只要implements就算是实现了??
还有get方法可什么都没有啊。
是不是不实现也可以??
GARNETT2183 2006-11-15
  • 打赏
  • 举报
回复
是Foot受委托.
老冯 2006-11-15
  • 打赏
  • 举报
回复
等厨师真的打开米袋一看:“哈哈。你娃娃有在豁老子哈...”
老冯 2006-11-15
  • 打赏
  • 举报
回复
委托并不代表已经实现了。(也就是受托方答应你了,但不执行)
老冯 2006-11-15
  • 打赏
  • 举报
回复
呵呵。你被假象蒙蔽了哈。形象化的说:老板委托你去买米,而你也接受了任务,但实际你先打游戏去了,提着空米袋回来告诉老板:“米我买回来了哈”,而这时开饭时间没有到,厨师也没有去打开米袋看到底有没有米。

其实并没有内存中并没有IFood的任何实例存在,但为什么能执行呢?因为这段代码中ShowFood在执行完writeln('Hello')返回了一个nil指针而不是IFood的实例指针。为了验证,你可以这样加几条语句看看:

var
run : TRunable;
food: IFood;
begin
{ TODO -oUser -cConsole Main : Insert code here }
run := TRunable.Create;
run.QueryInterface(ifood, food);
if food <> nil then
writeln('FOOD在内存里了);
readln;
end.

Re:CCNA_CCNP 思科网络认证 动态路由 RIP 协议======================# RIP 协议中 network的作用 rip协议种network的应该怎么写 作用network 用来配置路由器:哪些接口参与到RIP协议中,功能如下: 接口能够发送和接收RIP数据包 该接口所在的网段会被RIP协议通告出去 方法:分析接口属于哪个网络(子网掩码默认,故需先分清A、B、C类地址) 多个接口属于同一个网段(按A、B、C分类),只需写一个。 # RIP协议工作过程 静态路由存在的问题 RIP协议工作特点 配置RIP协议 查看RIP协议学习到的路由 network的应该怎么写 查看运行的RIP协议 查看RIP协议活动 RIPv1和RIPv2的区别 变长子网和等长子网 连续子网和不连续子网 RIPv2关闭自动汇总支持不连续子网 # 小型网络动态路由协议:RIP协议 路由信息协议RIP(Routing Information Protocol) 是一个真正的距离矢量路由选择协议。 它每隔30秒就送出自己完整的路由表到所有激活的接口。 建议终结端口可以关闭(#passive-interface fastEthernet 0/0) RIP协议选择最佳路径的标准就是跳数, 认为到达目标网络经过的路由器最少(跳数)的路径就是最佳路径。 暂时不以带宽为标准(后续...) 默认它所允许的最大跳数为15跳,也就是说16跳的距离将被认为是不可达的。 过期的路由信息被设置成16跳而非删除,原因为下次能够快速恢复 在小型网络中,RIP会运转良好, 但是对于使用慢速WAN连接的大型网络或者安装有大量路由器的网络来说, 它的效率就很低了。建议EIGRP和OSPF协议更适合 # rip 协议工作原理(图解) # 验证RIP协议健壮性 观察RIP协议更新路由信息的活动 # RIP协议默认会在网段类的边界自动汇总路由信息 不连续子网需要关闭RIP协议自动汇总功能 关闭RIP自动汇总的情况下:执行手工精确汇总 # RIP 协议定时器# RIP阻止路由环路的方案------------------------------------              

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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