更新時間:2022-12-16 16:08:16 來源:動力節點 瀏覽983次
1.Java中實現多態的機制是什么
在 Java 語言中,多態主要有以下兩種表現方式:
1)方法的重載(overload)。重載是指同一個類中有多個同名的方法,但這些方法有著不同的參數,因此在編譯時就可以確定到底調用哪個方法,它是一種編譯時多態。重載可以被看作一個類中的方法多態性。
2)方法的覆蓋(overide)。子類可以覆蓋父類的方法,因此同樣的方法會在父類與子類中有著不同的表現形式。在 Java 語言中,基類的引用變量不僅可以指向基類的實例對象,也可以指向其子類的實例對象。同樣,接口的引用變量也可以指向其實現類的實例對象,而程序調用的方法在運行期才動態綁定(綁定指的是將一個方法調用和一個方法主體連接到一起),就是引用變量所指向的具體實例對象的方法,也就是內存里正在運行的那個對象的方法,而不是引用變量的類型中定義的方法。通過這種動態綁定的方法實現了多態。由于只有在運行時才能確定調用哪個方法,因此通過方法覆蓋實現的多態也可以被稱為運行時多態。
2.什么是Java序列化,如何實現
什么是序列化:序列化是java提供的一種機制,通過這種機制,一個對象可以表示為一個字節序列,存儲到磁盤中。將序列化的對象寫入文件后,通過反序列化從文件中讀取出來。
為什么要序列化:對象、文件、數據有很多種格式,很難統一傳輸和保存,序列化后就可以將這些數據轉換成統一格式,方便傳輸。使用時再將其反序列化即可。
序列化過程:
(1)繼承Serializable接口,并且設置serialVersionUID。
(2)定義文件存儲位置
(3)實現writeUser方法
3.一個”.java”源文件中是否可以包括多個類(不是內部類)?有什么限制(明略數據)
可以有多個類,但是只能有一個public的類,帶public的類的類名必須和文件名一致。
4.Overload 和 Override 的區別。
1、重載發生在本類,重寫發生在父類與子類之間;
2、重載的方法名必須相同,重寫的方法名相同且返回值類型必須相同;
3、重載的參數列表不同,重寫的參數列表必須相同。
4、重寫的訪問權限不能比父類中被重寫的方法的訪問權限更低。
5、構造方法不能被重寫
5.super和this的區別?
this表示當前類對象,super表示當前類的父類
(1)屬性的區別:this訪問該類的屬性,子類中沒有找父類中的屬性。super訪問父類中的屬性。
(2)方法的區別:this訪問該類的方法,子類中沒有找父類中的方法。super訪問父類中的方法。
(3)構造的區別:this調用本類構造,務必放在構造方法的第一行。super調用父類構造,務必放在子類構造方法首行。
6.接口與抽象類的區別?
(1)抽象類要被類繼承,接口要被類實現;
(2)接口可多繼承接口,但是類只能單繼承;
(3)抽象類可以有構造器,但是接口不能有構造器
(4)抽象類:除了不能實例化抽象類之外,其他和普通類沒區別
(5)抽象類:抽象方法可以有public、protected、缺省這些修飾符,接口只能是public
(6)抽象類可以有成員變量,接口只能聲明常量
7.構造方法可否能被重寫?
構造方法不能被重寫
8.接口是否可繼承接口?抽象類是否可實現(implements)接口?抽象類是否可繼承實現類(concrete class)?
1、接口可以繼承接口,抽象類不可以繼承接口,但可以實現接口。
2、抽象類可以繼承實體類。抽象類可以實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。
3.抽象類可以繼承實體類,就是因為抽象類的可以繼承性和有方法。
4、一個接口可以繼承多個接口. interface C extends A, B {}是可以的. 一個類可以實現多個接口: class D implements A,B,C{} 但是一個類只能繼承一個類,不能繼承多個類 class B extends A{} 在繼承類的同時,也可以實現接口: class E extends D implements A,B,C{} 這也正是選擇用接口而不是抽象類的原因。
9.類的組成和執行順序?
1.先執行Test類的靜態代碼塊后執行Test類的main方法,說明要執行類的方法需要先加載這個類。
2.在創建ClassB的對象時,先去加載了父類ClassA。說明加載子類時如果沒有加載父類,會先加載父類。
3.靜態變量賦值和靜態代碼塊都會在類加載的時候執行,執行順序與靜態變量和靜態代碼塊出現的先后順序一致。
4.如果在類的靜態代碼塊執行之前創建該類的對象,則會先執行該類的構造代碼塊和構造方法。
5.構造代碼塊總是在構造函數之前執行。
6.創建子類對象,需要先初始化父類的對象。所以先執行父類的構造代碼塊和構造方法,再執行子類的構造代碼塊和構造方法
以上就是“高頻出現的面向對象面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習