1. 程式人生 > >JDK8.0接口中的默認方法和靜態方法

JDK8.0接口中的默認方法和靜態方法

div inter pri 默認方法 over main 值類型 Speak 普通

我們在接口中通常定義的方法是抽象方法,即沒有方法體,只有返回值類型和方法名:(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(); } }

JDK8.0接口中的默認方法和靜態方法