java 我们可以使用只有抽象方法的抽象类实现多重继承吗?[关闭]

9w11ddsr  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(208)

已关闭,此问题为opinion-based。目前不接受答复。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。

昨天关门了。
Improve this question
我们知道抽象类包含抽象和非抽象方法,那么如果我们只有抽象方法,以便我们可以实现类似接口的多重继承呢?
下面是一个例子:

public abstract class superclass1 {
 
   public abstract void func ( );

}

public abstract class superclass2 {

    public abstract void func ( );
}

public class test extends superclass1 , superclass2 {

    /* Code goes here */
}

我知道上面的代码是不可能的,但为什么Java不允许它,因为我们只有在扩展它之后才定义类体,就像接口一样,并且正确地工作,所以不会有歧义,也不会有问题。

oxf4rvwz

oxf4rvwz1#

好吧,回答你的问题“为什么Java不允许它?”“:“Java不支持类中的多重继承,因为它可能导致钻石问题,而不是提供一些复杂的方法来解决它,有更好的方法,通过它我们可以实现与多重继承相同的结果。”
你说,但是我的类只包含抽象方法,对吗?但你如何保证它将来不会改变呢?如果你有10个纯抽象类,并从它们中继承了100个类的所有组合,然后你决定向其中一个类添加一个非抽象方法,那该怎么办?如果你的父类是一个库类,你甚至不知道谁以及如何继承它。为了避免这种复杂性,Java说:如果需要纯抽象类和多重继承,只需使用接口。在实践中,我从来没有遇到过这种限制的大问题。实际上,换个Angular 来看,我在C++中看到过这样的例子,从类的多重继承导致了一个非常复杂的解决方案,很难维护。

相关问题