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)
我知道只使用接口可以实现多重继承,但上面的代码与接口完成的工作相同.
这是不允许的,因为你可以使用抽象类做更多的事情.允许多重继承是没有意义的,只要您在使用接口时只使用了抽象类.
仅对接口无法使用的抽象类更简单,在这种情况下,您将无法使用两个抽象父类.
注意:使用Java 8,您无法使用接口,您可以使用实现的公共实例和静态方法.
在Java 9中,您将能够private在接口中使用方法;)