首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多继承用例

多继承用例
EN

Software Engineering用户
提问于 2011-08-14 11:56:19
回答 6查看 5.5K关注 0票数 15

Java省略了多重继承,因为它消除了保留语言简单的设计目标。

我想知道Java (及其生态系统)是否真的“简单”。Python并不复杂,具有多重继承。所以我的问题是.

为大量使用多重继承

而设计的代码有哪些典型的问题模式?

EN

回答 6

Software Engineering用户

发布于 2011-08-15 12:10:52

在更动态的语言中,有一个名为混和剂的概念被大量使用。多继承是一种语言可以支持混联的方式。Mixins通常被用作类积累不同功能的一种方式。如果没有多重继承,就必须使用聚合/委托来获得类的混合类型行为,这在语法上要重一些。

票数 4
EN

Software Engineering用户

发布于 2011-08-14 12:39:55

我不会在这里深入研究,但是您肯定可以通过下面的链接http://docs.python.org/release/1.5.1p1/tut/multiple.html来理解python中的多重继承:

解释语义所必需的唯一规则是用于类属性引用的解析规则。这是深度优先,从左到右。因此,如果在DerivedClassName中找不到属性,则在Base1中搜索属性,然后(递归地)在Base1的基类中搜索属性,并且只有在没有找到属性的情况下,才会在Base2中搜索该属性,等等。

..。

显然,不分青红皂白地使用多重继承是维护的噩梦,因为Python中依赖约定来避免意外的名称冲突。具有多重继承的著名问题是从两个碰巧具有公共基类的类派生的类。虽然很容易了解在这种情况下发生了什么(实例将拥有公共基类使用的实例变量‘或数据属性的一个副本),但不清楚这些语义在任何方面是否有用。

这只是一个小段落,但足够大,以消除疑虑,我想。

票数 2
EN

Software Engineering用户

发布于 2011-08-14 14:55:52

我认为这个选择主要是基于金刚石问题引起的问题。

此外,往往有可能通过授权或其他手段规避多重继承的使用。

我不知道你最后一个问题的意思。但是,如果是“在哪些情况下多继承有用?”,那么在所有情况下,您都希望对象A具有对象B和C的功能。

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

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

复制
相关文章

相似问题

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