場景描述:
一個類實現兩個接口,這兩個接口裏面都有一個相同方法名的方法,那麼該類在引用這個方法的時候,具體是是引用的那個呢?
目錄
1、如果該類自己也有一個同名的方法
那麼毫無疑問,這個調用方法,是它自己的。
public interface Animal {
public void run();
default void print(){
System.out.println("Animal print");
}
}
public interface Animal2 {
public void run();
default void print(){
System.out.println("Animal2 print");
}
}
public class Person implements Animal ,Animal2 {
@Override
public void run() {
System.out.println("this is person run");
}
@Override
public void print() {
System.out.println("this is person print");
}
public static void main(String[] args) {
Person person= new Person();
person.run();
person.print();
}
}
this is person run
this is person print
Process finished with exit code 0
2.如果該類沒有實現這個方法
那麼就要有區分了:
2.1 如果這些接口之間沒有繼承關係
系統會提示報錯,提示需要強制實現此方法.
2.2 如果這些接口有繼承關係
那麼就會,調用子接口的方法,如下案例:
public interface Animal {
public void run();
default void print(){
System.out.println("Animal print");
}
}
public interface Animal2 extends Animal{
public void run();
default void print(){
System.out.println("Animal2 print");
}
}
public class Person implements Animal ,Animal2 {
@Override
public void run() {
System.out.println("this is person run");
}
public static void main(String[] args) {
Person person= new Person();
person.run();
person.print();
}
}
結果:
this is person run
Animal2 print
Process finished with exit code 0