当我们必须自己实现抽象方法时,我无法理解如何使用iterface实现多重继承?
假设我有
class A implements B,C{
public void B()
{//method of interface B implemented}
public void C()
{//method of interface C implemented}
}
我们可以这样做
class A{
public void B()
{//method of interface B implemented}
public void C()
{//method of interface C implemented}
}
如果我们没有获得现成的方法,在什么情况下以及它如何有用,我不知道如何有用?有人可以用一个例子解释一下吗?谢谢!!
答案 0 :(得分:5)
接口用于subtyping,而不是implementation inheritance。它不能用于代码重用,仅用于创建类型层次结构/用于polymorphism(实际上它可以用于Java 1.8以来的代码重用,但我认为只有在&#时才能使用专家功能) 39;没有其他可接受的解决方案)。
实现继承是实现代码重用的一种方法 - 只编写一次代码并在所有子类中使用它。还有其他方法可以实现这一点,请参阅Prefer composition over inheritance了解这种方法。
子类型/多态性不是关于重用代码,而是关于能够以相同的方式使用不同的类。
例如,java.util.LinkedList
实现java.util.List
(允许它用作列表)和java.util.Deque
(允许在需要堆栈/队列的地方使用它)。< / p>
答案 1 :(得分:0)
interface B {
default void B() {
System.out.println("In the interface method");
}
}
答案 2 :(得分:0)
多个接口允许您将给定对象视为许多不同的东西,所有这些都具有类型安全性。
如何实际为对象的每个“方面”实现正确的行为取决于你。
C ++允许您获得实现行为的帮助,但代价是更复杂的对象模型。