直接上代码看:
package com.bones.test03;
/**
* @author : zyy
* @version : 1.0
* 注意:
* 接口是一种要求和规范
* 接口可以实现多继承(一个类/接口可以实现implements多个接口,但是继承extends只能实现一个类)
* 接口的多继承,以及接口的编程规范的新特性(JDK7-JDK9)体现了多态的更加完善
*/
public class Test01 {
}
//java7 接口只能有抽象方法
interface Inter7{
void m1();
}
//java8 接口中static(静态不可重写)和default(可以重写)修饰的方法可以拥有方法体
interface Inter8{
void m1();
/*public*/ static void m2(){//(静态不可重写)
}
/*public*/ default void m3(){//(可以重写)
}
}
//java9 接口中可以使用private修饰方法,并拥有方法体,但是接口中的成员变量仍然不能用private修饰
interface Inter9{
void m1();
/*public*/ static void m2(){
}
/*public*/ default void m3(){
m4();//可以调用private修饰的方法
}
private void m4(){
}
}
总结
JAVA7 中,接口只能有抽象方法
JAVA8 中,接口中static(静态不可重写)和default(可以重写)修饰的方法可以拥有方法体
JAVA9 中,接口中可以使用private修饰方法,并拥有方法体,但是接口中的成员变量仍然不能用private修饰
感觉: 接口中的代码越来越靠近抽象类,但是仍然是支持多继承的,使得多态更加灵活。