interface中定義default方法和static方法


interface的default方法和static方法

  • 接口中可以定義static方法,可通過接口名稱.方法名()調用,實現類不能繼承static方法;
  • 接口中可以定義default方法,default修飾的方法有方法體,表示這個方法的默認實現,子類可以直接調用,可以選擇重寫或者不重寫;
  • 當實現類實現的多個接口中,有方法簽名相同的default方法時,必須重寫該方法;

  接口一:

package com.skd.interfacemethod;

/**
 * @Description
 * @Author virgosnail
 * @Date 2018/12/12
 */

public interface Human {

    /**
     * 必須被重寫
     */
    void oldMethod();

    /**
     * 實現類可以選擇重寫,也可以不重寫
     */
    default void hi(){
        System.out.println("interface default method");
    }

    /**
     * 不能被實現類重寫
     */
    static void hello(){
        System.out.println("interface static method");
    }
}

  接口二:

package com.skd.interfacemethod;

/**
 * @Description
 * @Author virgosnail
 * @Date 2018/12/12 20:59
 */

public interface Humen {

    default void hi(String aa){
        System.out.println("interface default method");
    }
}

  實現類:

package com.skd.interfacemethod;

/**
 * @Description
 * @Author virgosnail
 * @Date 2018/12/12
 */

public class Person implements Human,Humen {

    @Override
    public void oldMethod() {

    }

    /**
     * 實現的多個接口中有方法簽名相同的default 方法時,實現類必須重寫該方法
     */
    @Override
    public void hi() {

    }
    /**
     * 實現類不能繼承接口的static 方法
     */
}

  測試類:

package com.skd.interfacemethod;

/**
 * @Description
 * @Author virgosnail
 * @Date 2018/12/12
 */

public class Test {
    public static void main(String[] args) {
        // interface 的 default 方法通過實現類的實例對象調用
        new Person().hi();
        // interface 的 static 方法通過 接口名稱.方法名稱直接調用
        Human.hello();

    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM