基礎 | Java的四大基本特性
阿新 • • 發佈:2018-11-03
秋招面試時經常被問到 「Java有哪些基本特性?面向物件的特徵有哪些?談談對Java中多型的理解?在專案中哪些地方用到過多型?」,這個問題還是比較基礎的,但基礎問題不見得每個人都能回答的很好,最重要的還是要足夠理解並準確表達。
建議重點關注Java中「多型性」的相關問題。
Java有哪些基本特性?
等價於,面向物件的特徵有哪些?
- 抽象:將一類物件的共同特徵總結出來構造類的過程,包括資料抽象和行為抽象兩方面,分別對應於類的屬性和方法。抽象只關注物件有哪些屬性和行為,並不關注這些行為的細節是什麼。
- 封裝:通常認為封裝是把資料和操作資料的方法繫結起來,對資料的訪問只能通過已定義的介面。面向物件的本質就是將現實世界描繪成一系列完全自治、封閉的物件。我們在類中編寫的方法就是對實現細節的一種封裝;我們編寫一個類就是對資料和資料操作的封裝。可以說,封裝就是隱藏一切可隱藏的東西,只向外界提供最簡單的程式設計介面。總結:封裝主要體現在兩個方面,類是對資料和資料操作的封裝,類中的方法是對實現細節的封裝。
- 繼承:從已有類得到繼承資訊建立新類的過程。提供繼承資訊的類被稱為父類(超類、基類);得到繼承資訊的類被稱為子類(派生類)。繼承讓變化中的軟體系統有了一定的延續性,同時繼承也是封裝程式中可變因素的重要手段。
- 多型:指允許不同子型別的物件對同一訊息作出不同的響應,簡單來說就是用同一物件引用呼叫同一方法卻做了不同的事情。
通常情況下,抽象、封裝、繼承三大基本特性面試的時候不會問太多,但提到多型,面試官必會深挖。
談談對Java中多型的理解?
多型是指允許不同子型別的物件對同一訊息作出不同的響應。
多型包括編譯時多型和執行時多型。
方法過載(overload)實現的是編譯時的多型性(也稱為前繫結),而方法重寫(override)實現的是執行時的多型性(也稱為後繫結)。
執行時多型是面向物件最精髓的東西,要實現執行時多型需要:
- 方法重寫:子類繼承父類並重寫父類中已有的或抽象的方法。
- 物件造型:將父型別的引用指向子型別的物件,這樣父類的引用呼叫同樣的方法時即會根據子類物件的不同而表現出不同的行為。
在專案中的哪些地方用到過多型?
拋磚引玉:實驗室預約軟體包含學生、教師和管理員三種角色,三者都有login方法,但三者登入後進入的頁面卻是不同的,即在登入時會有不同的操作。三種角色都繼承父類的login方法,但對不同的物件卻有不同的行為。
歡迎關注
Java名企面試吧,每天10點24分,我們不見不散!
丙子先生的宗旨是,每天以短篇幅講高頻面試題,不增加太多負擔,但需要持之以恆。
能力有限,歡迎指教!