在Java 7中只能声明全局常量(public static final) 和 抽象方法(public abstract)
在Java 8中规定接口中的方法除了抽象方法之外,还可以定义静态方法和默认的方法。一定程度上,扩展了接口的功能,此时的接口更像是一个抽象类。
在Java 9 中,接口更加的灵活和强大,连方法的访问权限修饰符都可以声明为 private 的了,此时方法将不会成为你对外暴露的 API的一部分。
/**
* 面试题:抽象类和接口的区别
* 1.二者的定义:a.声明的方式;b.内部的结构(jdk7,jdk8,jdk9)
* 2.共同点:a.不能实例化;b.以多态的方式使用
* 3.不同点:a.单继承;b.多实现
*/
public interface MyInterface {
//jdk 7 : 只能声明全局常量(public static final) 和 抽象方法(public abstract)
void method1();
//jdk 8 : 声明静态方法 和 默认方法
public static void method2(){
System.out.println("testMethod2");
};
default void method3(){
System.out.println("testMethod3");
}
//jdk 9 : 声明私有方法
private void method4(){
System.out.println("testMethod4");
};
}