類如何實現具有相同方法的兩個接口


問題:

眾所周知,Java中一個類可以同時實現多個接口,如果多個接口中有相同的抽象方法時,實現類實現的方法是哪個接口的??

 

測試

Interface1.java

/**
 * @author liuyiyuan
 */
public interface Interface2 {
    void method();

    default void method2(){
        System.out.println("Interface2的方法調用:");
        method();
    }
}

Interface2.java

/**
 * @author liuyiyuan
 */
public interface Interface1 {
    void method();
    //int method(); //不能通過編譯

    default void method1(){
        System.out.println("Interface1的方法調用:");
        method();
    }
}

 

 

InterfaceImpl.java

/**
 * @author liuyiyuan
 */
public class InterfaceImpl implements Interface2, Interface1  {
    @Override
    public void method() {
        System.out.println("xxxxxxxxxxxxx");
    }

    public static void main(String[] args) {
        Interface1 anInterface = new InterfaceImpl();
        anInterface.method();
        anInterface.method1();

        Interface2 i2 = (Interface2) anInterface;
        i2.method();
        i2.method2();
    }
}

輸出如下:

 

 

結論

  • 實現了具有相同方法(名字相同、參數相同、返回類型相同)的多個接口時,這個方法實現是共用的
  • 具有相同方法時一定要重寫,即使是default方法也要重寫
  • 當方法參數不同時,方法之間為重載,互不影響
  • 當返回值不同時,會發生錯誤,不能編譯

 


免責聲明!

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



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