抽象类和多重继承

Zep*_*hyr 1 java abstract-class interface multiple-inheritance

我们可以通过使用抽象类来实现与接口相同的功能,那么为什么java不允许以下代码呢?

abstract class Animals
{
    public abstract void run();
}

abstract class Animals1
{
    public abstract void run1();
}

class Dog extends Animals,Animals1
{
  public void run() {System.out.println("Run method");}
  public void run1() {System.out.println("Run1 method");}
}
Run Code Online (Sandbox Code Playgroud)

我知道只使用接口可以实现多重继承,但上面的代码与接口完成的工作相同.

Pet*_*rey 5

这是不允许的,因为你可以使用抽象类做更多的事情.允许多重继承是没有意义的,只要您在使用接口时只使用了抽象类.

仅对接口无法使用的抽象类更简单,在这种情况下,您将无法使用两个抽象父类.

注意:使用Java 8,您无法使用接口,您可以使用实现的公共实例和静态方法.

在Java 9中,您将能够private在接口中使用方法;)