当子类和父类都实现相同的接口时会发生什么?

4
interface Vehicle
{   
    public abstract void getVehicle();      
}

public class HelloWorld  implements Vehicle{
@Override
public void getVehicle() 
 {
    System.out.println("HelloWorld Implementation");        
 }
}

class MyWorld extends HelloWorld implements Vehicle
{       
@Override
public void getVehicle() 
 {
    System.out.println("MyWorld Implementation");       
 }   
}

当两个类都实现了抽象方法getVehicle()时,实际上会发生什么?子类是否覆盖了超类的getVehicle(),还是接口的getVehicle()

2个回答

6
子类的实现会覆盖父类的实现。说子类会覆盖接口的方法没有意义,因为接口没有提供实现(除非你在谈论Java 8默认接口方法)。
顺便说一句,声明超类实现接口就足够了。子类将隐式实现它,无需声明实现它。
因此,即使您编写以下内容:
public class HelloWorld implements Vehicle

并且

class MyWorld extends HelloWorld

MyWorld仍然实现了Vehicle


1
  • 接口定义了应该有哪些方法
  • 父类定义了该方法
  • 子类定义并重写了在父类中定义的方法

因此,它的行为就像任何其他继承一样

(即使在接口中有默认方法实现[Java 8])

尽管如此,在子类中实现接口(当父类已经实现相同的接口时)对行为没有影响。这样做有助于提高可读性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接