1.JDK8后,接口中加入了默认方法,解决了接口的升级,带来的下面实现类大量的重写 2.JDK8后,接口增加了静态方法:必须通过接口名来调用,因为,一个实现类可能实现多个接口,如果多个接口中存在相同的方法名, 那么实现类,在调用的时候,就不知道,调用那个接口下方法,这就是接口中的静态方法,为什么要用接口名来调用原因 3.JDK9之后,接口中加入私有方法,因为有默认方法和静态方法(有方法体,就会存在有重复的代码),私有方法的出现,抽取了方法体中的公有方法,供默认方法和静态方法使用,分为普通私有有方法和静态私有方法,静态私有方法可以被接中的一切调用。
package eleven;
/**
* @author KuKaFei.Hai
* @date 2020/4/21 : 9:53
*/
public interface Ineer {
/**
* 普通接中的方法
*/
void showA();
/**
* 接口中的默认方法,实现类不一定非要实现
*/
default void showB(){
System.out.println("我是Inner接口中的默认方法。。。");
//在默认方法中调用普通私有方法
Metoh();
//在默认方法中调用静态私有方法
MetohB();
}
/**
* 接口中的静态方法,实现类也不用实现,必须通过接口来调用
*/
static void showC(){
System.out.println("我是Inner接口中的静态方法。。。");
//在静态方法中调用静态私有方法
MetohB();
//在静态方法中调用普通私有方法
// Metoh(); 我被挂掉了
}
/**
* 普通私有方法
*/
private void Metoh(){
System.out.println("我是接口中普通私有方法,只能被默认方法调用");
}
static private void MetohB(){
System.out.println("我是接口中的静态私有方法,我在接口中无所不能");
}
}
package eleven;
/**
* @author KuKaFei.Hai
* @date 2020/4/21 : 9:34
*/
public class NewInterfaceDemo {
public static void main(String[] args) {
MyInterfaceImpOne oneImp = new MyInterfaceImpOne();
oneImp.show1();
oneImp.show2();
System.out.println("----------------------");
MyInterfaceImpTwo twoImp = new MyInterfaceImpTwo();
twoImp.show1();
twoImp.show2();
twoImp.show3();
System.out.println("-----------普通方法,静态方法,默认方法------");
InnerImp inner = new InnerImp();
//调用普通方法
inner.showA();
//调用默认方法
inner.showB();
//调用静态方法
Ineer.showC();
}
}