go类型嵌入和对象组合有什么区别?
我的理解是,类型嵌入是对象组合,但嵌入类型的方法会自动转发,因为它们将在继承中进行。
发布于 2015-03-04 21:40:37
它与您所描述的完全一样:Go的嵌入是一种组合,具有“转发”接口的额外好处。
在我看来,嵌入是为了保留传统OOP继承的主要好处--代码重用--同时避免其最大的缺陷--非常紧密的耦合。当您通过嵌入“继承”一个方法时,您的“派生”类不负责或者甚至不能够重新实现它,因此它不可能以某种方式“破坏基类”。而且,由于没有您的“派生”类可能访问的“受保护”或“私有”方法,所以没有违反封装。但是您仍然可以直接“继承”“基类接口”,而不是编写一堆包装函数。
https://softwareengineering.stackexchange.com/questions/275267
复制相似问题