“为什么多重继承在java中是不可能的?”与“为什么java中不支持多重继承”这个问题有什么不同吗?或者两者是相互关联的。我知道这已经得到了回答,只是在寻找一个不同的地方,如果有的话,而不是为什么的答案。
两者都是同一个问题。
如果可能的话,我们可能会以著名的钻石死亡问题
告终。
Java的创建者选择不允许多重继承的原因是它可能会变得相当混乱。
实现接口
时,必须提供它所需的所有成员,这很容易理解。当计算机强制转换到接口
时,它所需要做的就是从类型对象
开始,并向上搜索基类,寻找实现接口
的基类。
接口完成95%的工作,10%的大脑空间和15%的CPU空间需要多重继承。接口不能完成多重继承的5%可以通过composity
简单地实现。
这就是为什么它没有得到支持。
问题内容: 我知道Java和C#中不允许多重继承。许多书只是说,不允许多重继承。但是可以通过使用接口来实现。没有任何关于为什么不允许它的讨论。谁能确切告诉我为什么不允许这样做? 问题答案: 简短的答案是:因为语言设计师决定不这样做。 基本上,.NET和Java设计器似乎都不允许多重继承,因为他们认为添加MI会增加语言的复杂性,而带来的好处却很少。 要获得更有趣和深入的阅读,Web上提供了一些文章,
例如:案例1:我们创建的每个Java类是否都将扩展类,如果是这样,那么为什么我们能够扩展一个类到我们的类可能是愚蠢的问题,刚刚记住了,我发布这个问题
问题内容: 为什么以下代码不起作用(Python 2.5.2)? 我想创建一个类似的类,但具有不同的功能。显然我的函数永远不会被调用。而是调用原始文件并失败,因为它需要3个参数,而我传入了一个。 这里发生了什么?这是一个线索吗? 谢谢! 问题答案: 关于其他几个答案,这与用C本身实现的日期无关。该方法不做任何事情,因为它们是 不可变的 对象,因此构造函数()应该完成所有工作。您会看到相同的行为将i
问题内容: Java不允许多重继承,但是它允许实现多个接口。为什么? 问题答案: 因为接口只指定什么类是做,而不是如何它是做什么的。 多重继承的问题在于,两个类可能定义不同的方式来做同一件事,而子类无法选择该选择哪一个。
我们知道在面向对象编程的时候,比如Bird既有叫的功能,又有飞的功能,可以通过继承Animal和实现飞的接口的功能实现: 问题1: 为什么很多不使用多继承?而是选择继承类+实现接口? 这个有什么好处? 如果还有其他类的功能比如: 问题2: Bird想要继承吃素的功能,请问这个如何进行实现呢?就不能进行继承了对吗?
问题内容: 为了完全理解如何解决Java的多重继承问题,我有一个经典的问题需要澄清。 可以说我有类此有子类和我需要做一个类,从扩展和自既是一只鸟和一匹马。 我认为这是经典的钻石问题。从我能理解经典的方式来解决,这是使,和类接口,并实现从他们。 我想知道是否还有另一种方法可以解决仍然可以为鸟和马创建对象的问题。如果有一种能够创造动物的方法,那也很棒,但不是必须的。 问题答案: 你可以为动物类(生物学