當前位置:
首頁 > 知識 > 面試求職中你需要了解的Java面向對象

面試求職中你需要了解的Java面向對象

Java面向對象的特徵: 抽象、封裝、繼承、多態.

抽象:抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面:數據抽象和過程抽象.

封裝:封裝就是對屬性和方法的載體類,只能通過其提供的介面(方法)來訪問,而把實現細節隱藏起來.也就是說,具體實現對程序員來說是透明的,封裝的好處在於對類內部的改變,不會影響到其他代碼.

封裝的做法:

1.私有屬性(private修飾符修飾屬性)。

2.提供public的讀(getXX)寫(setXX)方法。

3.在構造中調用方法.所有的非常量屬性基本都需要封裝.

封裝的好處:

1.隱藏類的實現細節

2.對所有用戶提供統一的介面

3.增強執行效果.

4.易於維護和擴展

繼承:繼承是一種關係,邏輯上滿足子類is a父類的關係才使用繼承.

子類繼承父類的屬性和非私有方法.不能繼承父類的構造,繼承關鍵字extends,類單繼承,介面多繼承.

在構造子類對象時,依次調用父類的構造(子類默認調用父類的無參構造.可以使用super(參數列表)來調用指定的父類的含參構造)到Object為止.再調用子類自身的.

子類調用父類的構造時,父類的構造只能調用一個且必須寫在子類構造的第一句.

【筆試題】:類載入時的順序問題:說出下面程序的執行結果

public class Test { public static void main(String[] args) { new B(); System.out.println("--------"); new B(); }}class A{ //靜態代碼塊 static{ System.out.println("static code block in father"); } //代碼塊 { System.out.println("code block in father"); } //構造 public A(){ System.out.println("construction of father"); }}class B extends A{ //靜態代碼塊 static{ System.out.println("static code block in son"); } //代碼塊 { System.out.println("code block in son"); } //構造 public B(){ System.out.println("construction of son"); }}

程序執行結構

static code block in fatherstatic code block in soncode block in fatherconstruction of fathercode block in sonconstruction of son--------code block in fatherconstruction of fathercode block in sonconstruction of son

多態:多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。

多態的類型

1.基本類型的多態(本質上是基本類型之間的自動類型轉換)

Java語言中將8種數據類型都分別封裝了一個類,這些類中封裝了各基本數據類型的屬性和基本運算.

基本類型自動轉換為對應的封裝類的操作叫做自動裝箱操作,反之叫自動拆箱操作,自動裝箱操作有一個自動裝箱池(範圍為-128~127).只要自動裝箱的數在自動裝箱池範圍內,則直接去池中找數據.

public class TestAutoPool { public static void main(String[] args) { Integer num1 = 127; Integer num2 = 127; System.out.println(num1==num2);//true Integer num3 = 128; Integer num4 = 128; System.out.println(num3==num4);//false }}

Charater在5.0沒有該自動裝箱池,在6.0有自動裝箱池.

byte、short、int、long有自己的自動裝箱池,其他基本類型都沒有該自動裝箱池.

自動裝箱不會出現錯誤,自動解箱在下面情況下會出錯

Integer num = null;int i = num;//null不能自動解箱

【筆試題】:說出下面程序的執行結果

程序運行結果:

a=128,b=-128

2.方法的多態(方法的重載、重寫)

a)覆蓋

父類繼承過來的方法對子類不合適時子類可以改變該方法的實現,這種操作叫做方法的重寫/覆蓋(繼承是重寫的前提條件)

重寫的要求:

.方法名、參數列表和返回類型必須相同(5.0以後允許返回子類類型).

.訪問許可權可以改但是不允許更小.(即子類的訪問許可權要麼大於父類的要麼相同,不允許小於父類的訪問許可權)

.拋出的異常不能更大.

b)重載

方法的重載要求方法名必須相同,參數必須不同(參數個數不同、類型不同、順序不同).返回值類型可以相同可以不相同.

3.類或者介面的多態(父類的引用指向子類的對象):Person p = new Student();

父類的引用指向子類的對象就發生了多態.後果:

.只能使用父類中方定義的屬性和方法

.子類中定義的不能直接使用

.子類複寫了父類的方法,此時調用情況根據方法是否static而不同[static(調用父類),非static(調用子類)].

.如果想使用子類中定義的方法,可以強制類型轉換(判斷是否可以轉換,用instanceof運算符來判斷對象的類型)

【筆試題】:說出下面程序的執行結果

class A { int a = 1; static int b = 20; int c = 3; double d = 2.0; void show() { System.out.println("Class A: a=" + a + " d=" + d + " c=" + c + " b=" + b); } void common(){ System.out.println("Class A: method common()"); } static void execute(){ System.out.println("Class A: method excute()"); }}class B extends A { float a = 3.0f; static int b = 30; int c = 5; String d = "Java program."; void show() { super.show(); System.out.println("Class B: a=" + a + " d=" + d + " c=" + c + " b=" +b); } void common(){ System.out.println("Class B: method common()"); } static void execute(){ System.out.println("Class B: method execute()"); } public static void main(String[] args) { A a = new B(); a.show(); System.out.println("----------------------"); a.common(); System.out.println("----------------------"); a.execute(); }}

程序運行結果

Class A: a=1 d=2.0 c=3 b=20Class B: a=3.0 d=Java program. c=5 b=30----------------------Class B: method common()----------------------Class A: method excute()

4.傳參時的多態(基本類型的多態與類類型的多態混合使用)

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 java學習吧 的精彩文章:

Java程序員應聘必須知道的那些事
JAVA初學問題
消沉的程序員 系列漫畫之憤怒的代碼

TAG:java學習吧 |

您可能感興趣

換季護膚,你需要的面膜list
Percy Liang:機器學習的可解釋性如此重要,我在努力,我們都需要努力
Facebook 遇到的最大危機,我們每個人也需要面對
Python需要了解清楚的問題
除了Pubmed,你可能還需要這些
魔性的土酷時尚,不需要向任何人解釋的too cool(上)
急停變向?你可能需要一雙adidas Harden Vol.2
私薦‖想在職場中維持少女感,你只需要一套Chanel
收到學校的waitlist之後,你需要做些什麼
魔性的土酷時尚,不需要向任何人解釋的too cool(下)
還在為MacBook Pro介面少發愁嗎?你可能需要這款USB-C擴展塢
面試時,面試官說我們需要有經驗的員工,切忌這麼回復
cosplay是需要演技的
超省錢的freestyle背景牆,你只需要1卷膠帶
蘋果iPhone支持應用程序將保留你需要的iPhone電池,並在庫存時提醒你
Facebook個人資料外泄的啟發:解決「信任」問題需要區塊鏈
雖然lindsay「身體缺陷」,但她卻不需要任何同情和安慰
做一個好的設計,需要考慮那些因素byFoster+partners設計事務所
對話iCloud泄密事件當事人:需要蘋果給一個負責的說法
面對反覆不愈的發燒,我們需要注意什麼