我们可以通过使用抽象类来实现与接口相同的功能,那么为什么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");}
}
我知道多重继承可以通过仅使用接口来实现,但是上面的代码做的事情与接口做的一样。
原文由 Zephyr 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是不允许的,因为您可以使用抽象类做更多的事情。允许多重继承是没有意义的,前提是当您可以使用接口时只使用了抽象类。
只对接口不能做的事情使用抽象类更简单,在这种情况下,您将无法使用两个抽象父类。
注意:在 Java 8 中,你不能用接口做的事情更少了,你可以拥有带有实现的公共实例和静态方法。
在 Java 9 中,您将能够在接口中拥有
private
方法;)