面試題:連結串列為什麼使用內部類實現?
點選上方“業餘草”,選擇“置頂公眾號”
第一時間獲取技術乾貨和業界資訊!
最近推廣了一個關於面試的活動。我看了一下章節,其中有一個面試題是說什麼是內部類?內部類的特點是什麼?
看到這個題,我突然想到,工作這麼多年,對內部類的關注一直都比較少。於是,在一次面試的機會中,我問了一個號稱有 10 年工作經驗的程式設計師:“連結串列為什麼使用內部類實現?”
他支支吾吾,半天沒有解釋清楚為什麼?於是,我百度搜尋了很久,只發現阿里雲上有一個免費的課程提到了“連結串列為什麼使用內部類實現?”
但是這個解釋非常的短,也非常的含蓄。所以,本文就根據我自己的工作經驗來說說,連結串列為什麼使用內部類實現?
說實話,Java 中使用連結串列的地方還是蠻多的,但是為什麼不把連結串列單獨抽取出來作為一個類,使用的地方組合或者繼承一下呢?
要解釋這個問題,我們先來看一看內部類的特點。
第一個特點,內部類可以訪問其所在類的私有屬性和方法。這一點就很像孕媽媽肚裡的小寶寶一樣,可以很方便的吸收一些媽媽的營養。以 HashMap 為例,它裡面有好幾個內部類。觀察這幾個內部類你會發現有一個共同特點就是內部類可以很方便的訪問所在外部類的一些私有屬性和方法。如果你把連結串列給抽取出來,你會發現,最終的連結串列實現起來難了很多。
第二個特點,內部類可以隱藏起來,不被同一個包中的其他類訪問,如果一個類只對某個類提供使用,那麼可以將其定義為內部類。這個特點在 HashMap 等集合中也有體現,具體來說就是各個內部類都是輔助所在的外部類的。作為外部類的一部分,具有強關聯性。並且不希望除了所屬的外部類使用外的其他類進行訪問。
第三個特點,可以聯合外部類解決多繼承問題。這也是我認為非常重要的一個特點。還是以 HashMap 為例,它本身繼承了 AbstractMap。但是它的所有內部類,都又有了各自的繼承。
關於連結串列為什麼使用內部類實現?我就通過以上 3 點來解釋。其中最重要的我認為是第 3 點。以上,希望能夠幫助到大家,如果有更好的觀點,請公眾號裡留言評論,謝謝!
10T技術資源大放送!包括但不限於:C/C++,Linux,Python,Java,PHP,人工智慧,GO等等。在公眾號內回覆對應關鍵字或框架名字,即可免費獲取!!
你再主動一點點 我們就有故事了
相關文章
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- 連結串列專題——面試中常見的連結串列問題面試
- java內部類,為什麼需要內部類?Java
- 2024/12/1 【連結串列】 LeetCode 面試題 02.07. 連結串列相交LeetCode面試題
- 連結串列-單連結串列實現
- 搞懂單連結串列常見面試題面試題
- 內部類是什麼?匿名內部類又是什麼?
- 面試官:Redis中列表的內部實現方式是什麼?面試Redis
- 面試官:Redis中字串的內部實現方式是什麼?面試Redis字串
- 面試官:Redis中有序集合的內部實現方式是什麼?面試Redis
- 單連結串列建立連結串列出現問題
- [演算法總結] 17 題搞定 BAT 面試——連結串列題演算法BAT面試
- PHP 使用連結串列實現對映PHP
- DS單連結串列--類實現(未完成)
- 一個node連結串列翻轉的面試題面試題
- 面試題35:複雜連結串列的複製面試題
- 面試問你連結串列和LinkedList怎麼答?面試
- FreeRTOS連結串列實現
- 連結串列的概念、實踐和麵試題
- 資料結構和演算法面試題系列—連結串列資料結構演算法面試題
- 022 透過連結串列學Rust之為什麼要非安全的單連結串列Rust
- 022 通過連結串列學Rust之為什麼要非安全的單連結串列Rust
- 演算法面試(一) 連結串列演算法面試
- 為什麼Oracle要搞出兩個髒連結串列Oracle
- 面試官:Redis中集合資料型別的內部實現方式是什麼?面試Redis資料型別
- 如何以及為什麼React Fiber使用連結串列遍歷元件樹React元件
- 為什麼現在連Date類都不建議使用了?
- Python實現單連結串列Python
- 實現雙向連結串列
- 資料結構連結串列筆試題資料結構筆試
- 面試必備的「反轉連結串列」面試
- 面試官:Redis中雜湊資料型別的內部實現方式是什麼?面試Redis資料型別
- 為什麼陣列查詢比連結串列要快?而插入刪除比連結串列效率低陣列
- 「譯」如何以及為什麼 React Fiber 使用連結串列遍歷元件樹React元件
- 【資料結構】連結串列(單連結串列實現+詳解+原碼)資料結構
- 《演算法筆記》6. 連結串列相關面試題總結演算法筆記面試題