多级继承问题
jdk8 接口默认方法问题
1.RedScarf 不实现默认方法 同时继承Persion和Student,默认方法名相同使用哪个方法?
Persion类
public interface Persion {
default String getName() {
return "persion name";
}
}
Student类
public interface Student{
default String getName() {
return "student name";
}
}
RedScarf类
public class RedScarf implements Persion,Student{
private String name;
public RedScarf(String name){
this.name = name;
}
}
此时编译器会提示你要实现getName方法,否则编译不通过
2.RedScarf 不实现默认方法 同时继承Student,Student继承Persion 默认方法名相同使用哪个方法?
修改Student 类
public interface Student extends Persion{
...
此时RedScarf 会通过编译,运行测试得出:
RedScarf redScarf = new RedScarf("张三");
System.out.println(redScarf.getName());
输出
student name
3.RedScarf 实现默认方法 同时继承Student,Persion ,Student 不继承Persion 或者Student 继承Persion 都会使用实现类的方法,因为类实现高于接口的实现。
RedScarf 添加代码
@Override
public String getName() {
return name;
}
测试输出
RedScarf redScarf = new RedScarf("张三");
System.out.println(redScarf.getName());
结果
张三