0

不要误会我的意思。我正在寻找这个答案很长一段时间。坦率地说,我无法在任何地方得到令人满意的答案。在很多地方 - 它提到 MI 提出了以下问题。我有两个类 A 和 B,一个类 C 继承自 A 和 B,并且 A、B 都声明了一个方法,比如 foo(int i),我忘记在 C 中声明一个 foo(int i)类,然后编译器不知道当我发出这样的问题时要调用哪个 foo(int) -

C c = new C();
c.foo(i);

但是如果我们使用多个接口而不是通过多个类继承,我们能克服吗?我们是否将多个接口的实现称为多重继承?如果我使用多个接口,编译器如何处理上述问题?

另外,关于-我什么时候应该使用接口,什么时候应该通过抽象类做同样的事情-这是否仅取决于这样的想法-

如果需求经常发生很大变化,那么我将使用接口实现相同的功能,否则我会选择抽象类吗?我想知道是否还有其他任何人想提及的原因。这些是 OOO 的非常基本的概念,我认为我缺少一些东西来在我的学习中取得相当大的进步。抱歉让这个问题有点长。

4

1 回答 1

0

多重继承的问题是禁止它并强制使用接口的原因,因为已经设计了 java。由于许多现实世界的多重继承用例都可以通过接口解决,而不会出现 MI 问题。

如果你在网上搜索,你会看到一些例子,其中多重继承被称为唯一真正的解决方案。正如您在 java-solutions 中看到的那样,似乎可以在没有它的情况下编写程序。

至少在那些真正关于实现接口的情况下,我建议实现一个接口。

实现多个接口就没有这些问题,因为它只是你必须提供什么数据/方法的合同,而不是如何提供。

所以接口是关于契约的,而继承是关于通用数据和方法的。

于 2013-05-12T18:19:10.280 回答