當前位置:首頁 » 編程語言 » java實現抽象類

java實現抽象類

發布時間: 2025-04-28 08:04:14

java編程抽象類技術如何實現

java編程一直以來都是互聯網上使用比較廣泛的一種編程語言,所以我們今天就一起來了解一下java編程中的抽象類是如何來實現的,希望通過對本文的閱讀,大家能夠對java編程技術有更深刻的認識,下面北京電腦培訓就開始今天的主要內容吧。



AbstractMap抽象類實現了一些簡單且通用的方法,本身並不難。但在這個抽象類中有兩個方法非常值得關注,keySet和values方法源碼的實現可以說是教科書式的典範。


抽象類通常作為一種骨架實現,為各自子類實現公共的方法。上一篇我們講解了Map介面,此篇對AbstractMap抽象類進行剖析研究。


Java中Map類型的數據結構有相當多,AbstractMap作為它們的骨架實現實現了Map介面部分方法,也就是說為它的子類各種Map提供了公共的方法,沒有實現的方法各種Map可能有所不同。


抽象類不能通過new關鍵字直接創建抽象類的實例,但它可以有構造方法。AbstractMap提供了一個protected修飾的無參構造方法,意味著只有它的子類才能訪問(當然它本身就是一個抽象類,其他類也不能直接對其實例化),也就是說只有它的子類才能調用這個無參的構造方法。


在Map介面中其內部定義了一個Entry介面,這個介面是Map映射的內部實現用於維護一個key-value鍵值對,key-value存儲在這個Map.Entry中。AbstractMap對這個內部介面進行了實現,一共有兩個:一個是可變的SimpleEntry和一個是不可變的SimpleImmutableEntry。


,java.io.Serializable


實現了Map.Entry介面,並且實現了Serializable(可被序列化)。


它的方法比較簡單都是取值存值的操作,對於key值的定義是一個final修飾意味著是一個不可變的引用。另外其setValue方法稍微特殊,存入value值返回的並不是存入的值,而是返回的以前的舊值。需要重點學習的是它重寫的equals和hashCode方法。


,java.io.


定義為不可變的Entry,其實是事實不可變,因為它不提供setValue方法,在多個線程同時訪問時自然不能通過setValue方法進行修改。它相比於SimpleEntry其key和value成員變數都被定義為了final類型。調用setValue方法將會拋出UnsupportedOperationException異常。


它的equals和hashCode方法和SimpleEntry一致。


接下來查看AbstractMap抽象類實現了哪些Map介面中的方法。


publicintsize()


Map中定義了一個entrySet方法,返回的是Map.Entry的Set集合,直接調用Set集合的size方法即是Map的大小。


publicbooleanisEmpty()


調用上面的size方法,等於0即為空。


publicbooleancontainsKey(Objectkey)


這個方法的實現較為簡單,通過調用entrySet方法獲取Set集合的迭代器遍歷Map.Entry,與參數key比較。Map可以存儲為null的key值,由於key=null在Map中存儲比較特殊(不能計算hashCode值),所以在這里也做了判斷參數key是否為空。


熱點內容
安卓沒有原生設置怎麼安裝 發布:2025-04-28 16:00:31 瀏覽:667
青島少兒編程哪家好 發布:2025-04-28 15:49:53 瀏覽:845
密碼箱密碼正確打不開怎麼辦 發布:2025-04-28 15:49:00 瀏覽:17
幼兒編程坑 發布:2025-04-28 15:48:56 瀏覽:550
php非同步同步 發布:2025-04-28 15:41:58 瀏覽:738
夢幻西遊腳本吧 發布:2025-04-28 15:38:29 瀏覽:590
愛奇藝怎麼緩存高清視頻 發布:2025-04-28 15:37:33 瀏覽:231
安卓手機一個圓點怎麼打 發布:2025-04-28 15:36:46 瀏覽:222
查找字元串linux 發布:2025-04-28 15:35:24 瀏覽:489
寶可夢伺服器電腦按鍵 發布:2025-04-28 15:35:11 瀏覽:566