java 介面 物件 = new 實現類 與 實現類 物件= new 實現類
阿新 • • 發佈:2021-07-10
今天我們討論問題是:介面 物件 = 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