
1.定义

2.格式

3.抽象方法

4.默认方法

5.静态方法

6.私有方法

7.常量

8.注意事项

package JavaBasicReview;
public class JavaGrammer {
public static void main(String[] args) {
System.out.println(InterfaceClass.AGE);
InterfaceClass.staticMethod();
System.out.println(Zi.AGE);//接口中的成员变量,可用实现类或者子类接口来调用
//Zi.staticMethod();接口中的静态方法,只能用包含此静态方法的接口调用
//InterfaceClass02.staticMethod();接口中的静态方法,只能用包含此静态方法的接口调用
new Zi().defaultMethod();//当父类中方法与接口中默认方法重名时,优先调父类方法
}
}
interface InterfaceClass {
//接口中可以有成员变量,必须有[public] [static] [final]修饰,必须初始化,可省略,版本要求 >=JDK9
public static final int AGE = 99;
//静态方法,只能通过接口类调用,实现类不能重写该方法,版本要求 >= JDK8
public static void staticMethod() {
staticPrivateMethod();
System.out.println("接口中的静态方法!");
}
//静态私有方法,为了接口中静态方法公共代码的抽离,解决了多个静态方法中重复代码的问题 版本要求 >=JDK9
private static void staticPrivateMethod() {
System.out.println("接口中静态方法中的重复代码!");
}
/*默认方法,为了解决:当接口类升级后(添加了抽象方法),其所有的实现类必须都实现该方法,很不方便
* 使用默认方法,可以解决该类问题,只需要部分实现类实现该默认方法即可,版本要求>= JDK8*/
public default void defaultMethod() {
privateMethod();
System.out.println("接口中的默认方法!");
}
//普通私有方法,解决多个默认方法中重复代码的问题
private void privateMethod() {
System.out.println("接口中普通私有方法!");
}
//抽象方法
public abstract void abstractMethod();
}
interface InterfaceClass01 {
//抽象方法
public abstract void abstractMethod();
/*当实现类实现多个接口时,如果默认方法重名,那么实现类必须重写该默认方法*/
public default void defaultMethod() {
privateMethod();
System.out.println("接口01中的默认方法!");
}
//普通私有方法,解决多个默认方法中重复代码的问题
private void privateMethod() {
System.out.println("接口01中普通私有方法!");
}
}
interface InterfaceClass02 extends InterfaceClass, InterfaceClass01 {
/*当接口继承多个接口时,如果默认方法重复,必须在子类接口中重写该默认方法*/
@Override
default void defaultMethod() {
}
}
class Fu {
public void defaultMethod() {
privateMethod();
System.out.println("Fu中的默认方法!");
}
//普通私有方法,解决多个默认方法中重复代码的问题
private void privateMethod() {
System.out.println("Fu中普通私有方法!");
}
}
//当一个类既有父类也有接口时,必须先继承再实现
class Zi /*extends Fu*/ implements InterfaceClass/*, InterfaceClass01*/ {
//当实现类实现了多个接口,且默认方法重名时,此时该实现类必须重写该默认方法
/*@Override
public void defaultMethod() {
}*/
@Override
public void abstractMethod() {
}
}