Java - 为什么Java中不支持多重继承?
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net
为什么Java不支持多重继承,可以考虑以下两点:
1.第一个原因是围绕钻石GEM形继承问题产生的歧义。考虑一个类A有foo()方法,然后B和C派生自A,并且有自己的foo()实现,现在D类使用多个继承派生自B和C,如果我们只引用 foo(),编译器将无法决定它应该调用哪个foo()。这也称为Diamond问题。
那为什么C++可以支持多重继承而Java不行。嗯,在这种情况下,它不是因为技术难度,而是更多的可维护和更清晰的设计是驱动因素。
2.对我来说第二个也是更有说服力的理由是,多重继承确实使设计复杂化并在转换、构造函数链接等过程中产生问题。假设你需要多重继承的情况并不多,简单起见,明智的决定是省略它。此外,Java可以通过使用接口支持多重继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现(或提供了一个默认实现),因此只有一个特定方法的实现,因此不会有任何歧义。
还没有评论,来说两句吧...