Java的面向?qū)ο缶幊?/a>">Java的面向?qū)ο缶幊?/a>
698
2022-05-29
Hello,你好呀,我是灰小猿!一個(gè)超會(huì)寫bug的程序猿!、
用堅(jiān)持締造技術(shù)、用指尖敲動(dòng)未來!
和很多小伙伴們一樣,我也是一名奔波在Java道路上的“創(chuàng)造者”。也想靠技術(shù)來改未來,改變世界!因?yàn)槲覀儓?jiān)信每一次敲動(dòng)鍵盤都能讓生活變得更智能、世界變得更有趣!
在此專欄《Java核心面試寶典》記錄我們備戰(zhàn)夢(mèng)想的【day 10】!
面向?qū)ο蟮姆矫娴南嚓P(guān)面試題也和大家總結(jié)了好幾天了,把其中的內(nèi)容分成了好幾個(gè)板塊和知識(shí)點(diǎn),今天就來繼續(xù)和大家分享最后的一部分,
1、聚集關(guān)系和組合關(guān)系有什么區(qū)別?
聚集關(guān)系描述兩個(gè)對(duì)象之間的所屬關(guān)系,模擬具有(has-a)關(guān)系,一個(gè)對(duì)象可以被幾個(gè)聚集對(duì)象所擁有;
如果一個(gè)對(duì)象被一個(gè)聚集對(duì)象所專有,該對(duì)象和聚合對(duì)象之間稱為組合。
如一個(gè)人駕駛一輛汽車,而一輛汽車可以被多個(gè)人駕駛,這就是聚集關(guān)系
一個(gè)人擁有一個(gè)身份證,一個(gè)身份證也只能被一個(gè)人擁有,這就是組合關(guān)系。
2、什么是“強(qiáng)是關(guān)系”和“弱是關(guān)系”,對(duì)于這兩種關(guān)系,分別如何在代碼中體現(xiàn)?
“強(qiáng)是關(guān)系”描述直接繼承關(guān)系,“弱是關(guān)系”描述一個(gè)類具有某些屬性,“強(qiáng)是關(guān)系”可以用類的繼承表示,“弱是關(guān)系”可以用接口表示。
3、內(nèi)聚和耦合的含義是什么?類的設(shè)計(jì)原則對(duì)于內(nèi)聚和耦合是如何要求的?
內(nèi)聚指同一個(gè)類或模塊內(nèi)部的元素的關(guān)聯(lián)性和緊密程度,耦合指不同類或模塊之間的聯(lián)系緊密程度。
類的設(shè)計(jì)原則要求高內(nèi)聚低耦合,即同一個(gè)類或模塊內(nèi)部關(guān)聯(lián)性強(qiáng),不同類或模塊之間的關(guān)聯(lián)盡可能少,每個(gè)類或模塊盡可能獨(dú)立存在。
4、如何判斷兩個(gè)類之間應(yīng)該使用繼承關(guān)系還是聚集關(guān)系?
如果兩個(gè)類之間為“是關(guān)系”,則使用繼承關(guān)系;如果兩個(gè)類之間為“具有關(guān)系”,則使用聚集關(guān)系。
如“拉布拉多”是“狗”,則拉布拉多和狗之間就是繼承關(guān)系,
“教室”里面具有“學(xué)生”,則教室和學(xué)生就是聚集關(guān)系
5、如何實(shí)現(xiàn)數(shù)據(jù)域的封裝性?
確保類中數(shù)據(jù)域的封裝性的方法是給其增加 private修飾符隱藏其可見性,避免從外部直接訪問數(shù)據(jù)域。
如果需要從外部讀取數(shù)據(jù)域的值,則提供讀取器get方法。如果需要從外部修改數(shù)據(jù)域的值,提供設(shè)置器set方法。
如果一個(gè)方法只在類的內(nèi)部使用,則應(yīng)該對(duì)該方法使用 private 修飾符,避免從外部調(diào)用該方法。這就確保了數(shù)據(jù)域的封裝性。
6、序列化和反序列化的含義分別是什么?
把對(duì)象轉(zhuǎn)化為字節(jié)序列的過程稱為對(duì)象的序列化,把字節(jié)序列恢復(fù)成對(duì)象的過程稱為對(duì)象的反序列化
7、Serializable接口的作用是什么?這個(gè)接口包含哪些信息?
或:如何將一個(gè)對(duì)象標(biāo)識(shí)成是可被序列化的?
Serializable接口的作用是標(biāo)識(shí)一個(gè)對(duì)象是否可被序列化,只有當(dāng)一個(gè)類實(shí)現(xiàn)了Serializable接口時(shí),這個(gè)類的實(shí)例才是可序列化的,這個(gè)接口是標(biāo)識(shí)接口,不包含任何數(shù)據(jù)域和方法。
8、關(guān)鍵字transient的作用是什么?
關(guān)鍵字transient的作用是執(zhí)行數(shù)據(jù)域不被序列化,當(dāng)一個(gè)數(shù)據(jù)域不能被序列化,或者不想對(duì)一個(gè)數(shù)據(jù)域序列化時(shí),給這個(gè)數(shù)據(jù)域加上關(guān)鍵字transient,在序列化的過程中將忽略這個(gè)數(shù)據(jù)域。
9、Class類的作用是什么?
Class類的作用是在程序運(yùn)行時(shí)保存每一個(gè)對(duì)象所屬的類的信息,在程序運(yùn)行時(shí)分析類。
10、Class類有哪些常用的方法,這些方法的作用分別是什么?
Class 類中最常用的方法是getName,該方法返回類的名字。
Class 類中還有方法可以返回類中的數(shù)據(jù)域、方法和構(gòu)造方法。
其中,方法名不包含 Declared 的方法只返回公有的數(shù)據(jù)域、方法和構(gòu)造方法,
方法名包含 Declared的方法會(huì)返回所有的數(shù)據(jù)域、方法和構(gòu)造方法。
方法名以 s 結(jié)尾的返回所有的數(shù)據(jù)域、方法和構(gòu)造方法,
方法名不以 s 結(jié)尾的返回單個(gè)的數(shù)據(jù)域、方法和構(gòu)造方法。
今日總結(jié)
今天和大家分享了面向?qū)ο蟮拿嬖囶}中的最后一部分,這部分的內(nèi)容主要要掌握的其實(shí)就兩點(diǎn),一個(gè)是了解序列化和反序列化操作,另一個(gè)是熟悉反射機(jī)制,其中反射是比較重要的一點(diǎn),也是之后開發(fā)中會(huì)經(jīng)常用到的內(nèi)容。
到現(xiàn)在,面向?qū)ο笙嚓P(guān)的面試題就暫時(shí)和大家總結(jié)完了,如果小伙伴們有遇到其他相關(guān)的面試題,歡迎在評(píng)論區(qū)留言提出,我會(huì)把大家提出的總結(jié)到文章內(nèi)`, 歡迎小伙伴們一起評(píng)論區(qū)打卡學(xué)習(xí)!小伙伴們可也在左方加我好友一起探討學(xué)習(xí)!
我是==灰小猿==,我們下期見!
Java 面向?qū)ο缶幊?/p>
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。