在JAVA8之前接口只能有 全局静态常量 和 抽象方法
JAVA8 后可以 有默认实现方法 以及 静态方法
默认实现
public interface MyInterface{
default String getName(){
return "姚明";
}
}
接口默认方法的 ”类优先“ 原则
若一个接口定义了一个默认方法, 而另外一个父类或接口中又定义了一个同名的方法时
- 选择父类的方法。如果一个父类提供了具体的实现,那么接口中具有相同名称和参数的默认方法会被忽略。
- 接口冲突。如果一个父接口提供一个默认方法,而另一个接口也提供了一个具有相同名称和参数列表的方法,那么必须覆盖方法来解决冲突。不管是否是默认方法。
public interface MyInter{
default String getName(){
return "刘翔";
}
}
public class MyClass implements MyInterface,MyInter{
@Override
public String getName(){
return MyInterface.super.getName();
}
}
静态方法
public interface MyInterface{
default String getName(){
return "姚明";
}
public static void staticFunction(){
System.out.print("孔令辉");
}
}
public class MyClass implements MyInterface,MyInter{
@Override
public String getName(){
return MyInterface.super.getName();
}
//静态方法调用
MyInterface.staticFunction();
}