场景描述:
一个类实现两个接口,这两个接口里面都有一个相同方法名的方法,那么该类在引用这个方法的时候,具体是是引用的那个呢?
目录
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