接口中的抽象方法的默认修饰符:public abstract 例:public abstract void a();==void a();=public void a();所以每当实现一个接口时会报错就是因为抽象方法没有实现,接口的抽象方法应用很广,只不过他没有把public abstract写出来而已。抽象方法是没有方法体的,所以没有{}。(jdk1.7就有)
接口中的默认方法在实现类的实现其实可以理解做继承,不过接口的默认方法必须要有方法体,重写的时候不需要加default,试下加@override没报错就说明是重写。(jdk1.8才有)默认方法必须加default,不然会被当成抽象方法。
接口的静态方法,直接调用也可输出。跟类差不多。静态方法只能供接口直接使用,不能供实现类使用。(jdk1.8才有)
接口中私有的方法不能通过实现类访问,只能通过接口的默认方法使用。这样实现类就可以通过默认方法间接调用。默认方法调用静态的私有方法,静态不能够访问非静态,非静态能够访问静态和静态(jdk1.9才有)。
java虚拟机在加载类的过程中就已经为静态资源分配好了空间,相对于非静态的类而言,静态类出现的更早,静态方法无法去调用一个不存在的资源。
接口中没有构造方法,不能创建对象。无法定义成员变量,但可以定义常量。
一个类是可以同时实现多个接口的