Java省略了多重继承,因为它消除了保留语言简单的设计目标。
我想知道Java (及其生态系统)是否真的“简单”。Python并不复杂,具有多重继承。所以我的问题是.
而设计的代码有哪些典型的问题模式?
发布于 2011-08-15 12:10:52
在更动态的语言中,有一个名为混和剂的概念被大量使用。多继承是一种语言可以支持混联的方式。Mixins通常被用作类积累不同功能的一种方式。如果没有多重继承,就必须使用聚合/委托来获得类的混合类型行为,这在语法上要重一些。
发布于 2011-08-14 12:39:55
我不会在这里深入研究,但是您肯定可以通过下面的链接http://docs.python.org/release/1.5.1p1/tut/multiple.html来理解python中的多重继承:
解释语义所必需的唯一规则是用于类属性引用的解析规则。这是深度优先,从左到右。因此,如果在DerivedClassName中找不到属性,则在Base1中搜索属性,然后(递归地)在Base1的基类中搜索属性,并且只有在没有找到属性的情况下,才会在Base2中搜索该属性,等等。
..。
显然,不分青红皂白地使用多重继承是维护的噩梦,因为Python中依赖约定来避免意外的名称冲突。具有多重继承的著名问题是从两个碰巧具有公共基类的类派生的类。虽然很容易了解在这种情况下发生了什么(实例将拥有公共基类使用的实例变量‘或数据属性的一个副本),但不清楚这些语义在任何方面是否有用。
这只是一个小段落,但足够大,以消除疑虑,我想。
发布于 2011-08-14 14:55:52
我认为这个选择主要是基于金刚石问题引起的问题。
此外,往往有可能通过授权或其他手段规避多重继承的使用。
我不知道你最后一个问题的意思。但是,如果是“在哪些情况下多继承有用?”,那么在所有情况下,您都希望对象A具有对象B和C的功能。
https://softwareengineering.stackexchange.com/questions/100993
复制相似问题