1. 程式人生 > 其它 >java 介面 物件 = new 實現類 與 實現類 物件= new 實現類

java 介面 物件 = new 實現類 與 實現類 物件= new 實現類

今天我們討論問題是:介面 物件 = new 實現類 與 實現類 物件= new 實現類???

Java 中到底是應該用介面型別 還是實現類的類型別去引用物件?

//implA 為介面 ClassA為其實現類
implA a=new ClassA();//介面型別的引用變數A 去接收物件地址
or
ClassA a=new ClassA();//類型別的引用變數A 去接收物件地址

我們假設有一個介面A ,和它得實現類B,簡化程式碼如下:

public interface InterA{

    void request();
}

public class ImplA implements InterA {

    @Override
    public void request() {
        System.out.println("介面中的方法");
    }

    public void specile() {
        System.out.println("實現類中特殊的方法");
    }
}

測試類:

public class Test {

    public static void main(String[] args) {
        /**
         * 介面型別的引用變數A 去接收物件地址,只能呼叫介面中的方法
         */
        InterA a= new ImplA();
        a.request();

        /**
         * 類型別的引用變數A 去接收物件地址,可以呼叫很多方法
         */
        ImplA b = new ImplA();
        b.request();
        b.specile();
    }
}
InterA a= new ImplA();

用介面型別的引用變數demo,去接收實現類B例項化出來的物件地址(這裡的=是傳遞的地址)。為什麼不是ImplA b = new ImplA();呢,這樣也不會有問題啊?(當然InterA a= new InterA();是不可能的,因為介面是不能用來例項化物件的,但可以用來宣告一個介面型別的引用變數)。

轉載於:https://www.cnblogs.com/xiaoheliu1024/p/10918017.html