首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌入和合成有什么区别?

嵌入和合成有什么区别?
EN

Software Engineering用户
提问于 2015-03-04 21:12:43
回答 1查看 818关注 0票数 1

go类型嵌入和对象组合有什么区别?

我的理解是,类型嵌入是对象组合,但嵌入类型的方法会自动转发,因为它们将在继承中进行。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2015-03-04 21:40:37

它与您所描述的完全一样:Go的嵌入是一种组合,具有“转发”接口的额外好处。

在我看来,嵌入是为了保留传统OOP继承的主要好处--代码重用--同时避免其最大的缺陷--非常紧密的耦合。当您通过嵌入“继承”一个方法时,您的“派生”类不负责或者甚至不能够重新实现它,因此它不可能以某种方式“破坏基类”。而且,由于没有您的“派生”类可能访问的“受保护”或“私有”方法,所以没有违反封装。但是您仍然可以直接“继承”“基类接口”,而不是编写一堆包装函数。

票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/275267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档