1. 程式人生 > >接口和多態

接口和多態

繼承 cnblogs com oop 使用 接口 http 接口編程 log

技術分享

子類 繼承 父類

實現類 接口 (多態)


為什麽要用接口引用指向實現類的對象

List list;是在棧區開辟一個空間放list引用,並沒有創建對象所以不知道ArrayList還是LinkedList當你list= new ArrayList(); 就創建了ArrayList對象。並且把開始創建的list引用指向這個對象ArrayList和LinkedList都是List的實現類。

為什麽一般都使用 List list = new ArrayList() ,而不用 ArrayList alist = new ArrayList()呢?

問題就在於List接口有多個實現類,如 LinkedList或者Vector等等,現在你用的是ArrayList,也許哪一天你需要換成其它的實現類呢?,這時你只要改變這一行就行了:List list = new LinkedList(); 其它使用了list地方的代碼根本不需要改動。假設你開始用 ArrayList alist = new ArrayList(), 這下你有的改了,特別是如果你使用了 ArrayList特有的方法和屬性。 ,如果沒有特別需求的話,最好使用List list = new LinkedList(); ,便於程序代碼的重構

. 這就是面向接口編程的好處(OOP/AOP)

註意事項

list只能使用ArrayList中已經實現了的List接口中的方法,ArrayList中那些自己的、沒有在List接口定義的方法是不可以被訪問到的

list.add()其實是List接口的方法

但是調用ArrayList的方法如 clone()方法是調用不到的

接口和多態