这是场景: -
class Canine{
public void roam(){
System.out.println("Canine-Roam");
}
}
public interface Pet{
public abstract void roam();
}
class Dog extends Canine implements Pet{
public void roam(){
System.out.println("Dog Roam");
}
public static void main(String [] args){
Dog adog = new Dog();
adog.roam();
}
}
我知道 JVM 在选择运行哪个方法时不能有任何混淆,这意味着哪个方法会被覆盖。但无论如何我都很困惑。为什么这个程序会编译?