文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
1.4 动态分发
我们的简单对象系统就足以展示面向对象编程的基本特性:动态分发。请注意,在下面的代码中,node(节点)将 sum 消息发送给每个子节点,并不知道它们是 leaf(叶节点)还是 node:
(define (make-node l r)
(OBJECT
([field left l]
[field right r])
([method sum () (+ (-> left sum) (-> right sum))])))
(define (make-leaf v)
(OBJECT
([field value v])
([method sum () value])))
> (let ([tree (make-node
(make-node (make-leaf 3)
(make-node (make-leaf 10)
(make-leaf 4)))
(make-leaf 1))])
(-> tree sum))
18
尽管看起来很简单,这个对象系统已经足以说明对象的基本抽象机制,以及它和抽象数据类型(abstract data type)的区别。参见 第三章 。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论