Go学习笔记:匿名成员
开始没搞明白啥是匿名成员,看了好几个文章,总算明白了,至少自认为是。 为啥需要匿名成员? 得从OO说起。OO要说是现代的计算机编程语言中必需的部分了。不过不同的语言对于如何实现OO中的各种概念做法并不一样。Go对OO提供了支持,但采用的是一种简洁并且直接的办法,没有类似于Java中的extends、implements关键字,而是直接用匿名成员,并通过“委派”来实现。比如下面这些代码:
type E interface{ Start() Stop() Renewal(x int) } Open() Close() Renewal() }
和使用Car自己的方法没任何区别。是不是有extends和implements的意思! 需要注意的是:由于存在同名方法(Renewal),就不能这样了: car.Renewal()//编译错误 而必需是: car.E.Renewal(5) 或者 car.W.Renewal()
看起来,有了这个匿名成员和委派,OO中的好几个概念都包含进去了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |