不要误会我的意思。我很长一段时间都在寻找这个答案。坦率地说,我无法在任何地方得到令人满意的答案。在很多地方 - 它提到MI会给以下问题带来很大的影响。 我有两个类A和B,一个类C继承自A和B,并且A,B都声明了一个方法,比如说foo(int i),我忘了在C中声明一个foo(int i) class,然后编译器在我发出类似这样的东西时不知道要调用哪个foo(int) -
C c = new C();
c.foo(i);
但是,如果我们使用多个接口而不是通过多个类继承,我们能克服吗?我们将多个接口的实现称为多重继承吗?如果我使用多个接口,编译器如何处理上述问题?
另外,关于 - 什么时候我应该使用一个接口,什么时候我应该通过抽象类做同样的事情 - 这是否只取决于这样的想法 -
如果需求经常变化很多,那么我将使用接口实现相同的,否则抽象类将是我的选择?我想知道是否还有其他任何人想提及的原因。这些是OOO的非常基本的概念,我想我错过了一些东西,在我的学习中取得了相当大的进步。很抱歉让这个问题有点长。
答案 0 :(得分:0)
多重继承的问题是禁止它并强制使用接口的原因,因为java已经设计好了。由于许多真实世界的多重继承用例可以通过接口解决而没有MI的问题。
如果您在网上搜索,您将看到示例,其中多重继承被称为唯一真正的解决方案。没有它就可以编写程序,正如你在java-solutions中看到的那样。
至少在 实现接口的情况下,我建议实现一个接口。
实现多个接口没有这些问题,因为它只是一个契约,你必须提供哪些数据/方法,而不是如何。
所以接口是关于契约的,继承是关于常见的数据和方法。