我们在接口中通常定义的方法是抽象方法,即没有方法体,只有返回值类型和方法名:(public abstract) void Method();
类在实现接口的时候必须重写抽象方法才可以
jdk8中新加的默认方法和静态方法是什么呢?
可以通俗理解:静态方法属于类,调用静态方法通过接口名曲调用它,默认方法在实现类中可以重写,可以不重写
;默认方法,在接口中定义,区别抽象方法,有方法体 public interface DefaultStaticInterface { //普通方法,类实现接口必须重写它 abstract void Method(); //默认方法在类实现接口时候可以不重写,也可以重写 public default void defaultMethod() { System.out.println("这是接口定义的默认方法,实现接口可以不重写他"); } ; //静态方法是属于接口的,调用它必须用接口调用 public static void staticMethod() { System.out.println("这是接口的静态方法"); } ; } //探索静态方法 默认方法是否可以被继承 interface ExtendInterface extends DefaultStaticInterface{ void speak(); } class Test implements DefaultStaticInterface { @Override public void Method() { System.out.println("重写了类中定义的抽象方法Method"); } @Override public void defaultMethod() { System.out.println("这里选择性的重写了了接口中的默认方法defaultMethod()"); } //静态方法,通过接口定义 public static void main(String[] args) { //静态方法的调用 DefaultStaticInterface.staticMethod(); Test test = new Test(); test.Method(); test.defaultMethod(); } } class Test01 implements ExtendInterface{ @Override public void speak() { System.out.println("重写speak方法"); } @Override public void Method() { System.out.println("重写父类中的抽象方法"); } @Override public void defaultMethod() { System.out.println("重写父类接口中的默认方法"); } //可以知道,子类接口中的默认方法是可以继承的,但是静态方法始终是属于父类接口的,通过父类接口调用 public static void main(String[] args) { Test01 test01=new Test01(); test01.Method(); test01.defaultMethod(); DefaultStaticInterface.staticMethod(); } }