java為什麼要使用介面回撥
阿新 • • 發佈:2019-02-03
也許你在程式設計的過程中會發現這樣一行程式碼:格式如:
介面 介面變數 = new 介面 子類();
Link<String> link = new ArrayList<String>();
//Link為一個介面 ArrayList為一個泛型類
那麼為什麼前面要用介面引用new 出來的物件呢?
可以告訴你的是,這是介面的回撥,是介面多型的一種方式。
但是為什麼要這樣使用呢?其優點在哪裡?有什麼缺點?
在回答之前,我先介紹一下介面相關內容。
**
介面是java一種重要的資料型別,用介面宣告的變數稱為介面變數,介面屬於引用型變數,介面變數中可以存放實現該介面的類的例項的引用,即存放物件的引用。
**
下面舉例說明為什麼要這麼使用:
//1.Collection co = new ArrayList();
//2.ArrayList co = new ArrayList();
我們一般情況下使用的是第二種方法,如果使用第一種方法會導致co中沒有ArrayList的方法,但是這樣的話,便可以遮蔽具體的方法的實現,換而言之,只需要知道co做什麼,而不是怎麼做。如果有一天ArrayList換成了另一種的實現如anotherlist呢,我們第一種方法只要修改new的地方,物件co還能繼續使用,然而第二種便不能了。如果只有一種實現,那麼介面便沒有存在的必要,介面本身就是為了多實現而存在的。