面向對象這個東西,其實我們一直是不是都沒有感覺到自己在用,以後我一定要用用。以前學c#時候認真的看過一次,最近一直研究java。隨便再看看。
多態問題:
在java中多態分為(1)編譯時多態和(2)運行時多態
(1)編譯時多態比較容易理解:其實就是通過方法重載,就是方法的重載,同一個函數名但是可以參數不一樣。這就是重載(so easy)
(2)運行時多態:這個是通過方法覆蓋實現的,就是子類在繼承父類的時候,通過對某個方法的重寫,覆蓋父類方法。
簡單的說:比如我們有個父類A,子類B通過Extends繼承了A,C,D也是,我們在方法調用的時候只要用調用A就行了。
(使用父類引用指向子類對象,在調用某一父類中的方法時,不同的子類就會表現出不同的方法結果,這就是多態,有繼承才有多態)
作用:擴展性好,我們在新增某個類的時候,只要繼承父類,並覆蓋父類方法就ok了。一個接口多種實現方式,繼承的表現就是多態。
(應用程序不必對每一個派生類編寫一個功能調用,只需要對抽象基類進行處理即可)
我補充一下使用接口的理由:它能使我們創建更加通用的代碼,通過針對接口而非具體實現類來編寫代碼,這樣我們的代碼可以應用更多地對象類型。
容器:
我們使用比較多的肯定是List<T> list=new ArrayList<T>,不可否認ArrayList很強大,但是其實java還有好多其他的好東西。
首先要說明一下List是一個接口而已,不能List x=new List();List只是聲明了函數,並沒有實現。ArrayList是一個繼承了List的具體實現類而已。
(1)數組:說到容器,可能要提到數組,算了,暫時就把數組看出是固定了大小的容器(其實它不是容器),然後由於知道數組大小,所以用參數下標即可隨機訪問,速度應該是最快的 O(1),要注意的一點就是數組的legths是數組的大小而不是數組裡面的數據個數。
(2)Collection和Collections的區別
Collection是集合類的頂級接口,它下面還有List和Set兩個接口,(接口繼承接口)
Collections是集合類的一個工具類,這個類提供了一系列的靜態函數,可以用來對集合排序,選取最大值。。。。。。
(3)用圖來說明一下關系(還有map,它是和Collection一個級別的,包括hashtable,hashMap。。。。)
(4)迭代器(iterator)
迭代器是一種設計模式,這他媽也是設計模式。我們知道迭代器是用來選取集合對象的,我們通過迭代器選取對象引用可以直接對對象進行操作。代碼我就不貼了。
作用:作為一種設計模式,可以做到不必要知道或者重寫代碼就可以應用不同類型的容器。
這個可能無法理解,這麼說吧:就是我們可以不必管集合是用什麼方式實現的,管他是list還是map,我反正只需要調用迭代器就ok了。其實一般的時候也用不到,可能在你
要改某個程序的集合實現方法的時候用到。
作者:博客園 郭佳盛哈哈