Java:如果我们必须自己实现抽象方法,如何实现多个接口实现多重继承?

时间:2015-10-05 19:39:21

标签: java inheritance interface

当我们必须自己实现抽象方法时,我无法理解如何使用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}
}

如果我们没有获得现成的方法,在什么情况下以及它如何有用,我不知道如何有用?有人可以用一个例子解释一下吗?谢谢!!

3 个答案:

答案 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)

好消息!在Java 8+中,接口可能有Default Methods;所以你可以在界面中提供一个实现。

interface B {
    default void B() {
        System.out.println("In the interface method");
    }
}

答案 2 :(得分:0)

多个接口允许您将给定对象视为许多不同的东西,所有这些都具有类型安全性。

如何实际为对象的每个“方面”实现正确的行为取决于你。

C ++允许您获得实现行为的帮助,但代价是更复杂的对象模型。