- 個人首頁: IT學習日記
- 版權: 本文由【IT學習日記】原創、在CSDN首發
- 如果文章對你有幫助、歡迎關注、點贊、收藏(一鍵三連)、有任何問題歡迎私信,看到會及時回複!
文章大綱
- 一:請選出下面關于重寫和重載說法正确的選項
- 二:請選出下面對應重載說法錯誤的選項
- 三:請選出下面說法正确的選項
- 四: 下面那個選項替換到"here"可以讓結果輸出為:son
- 五: 下面代碼執行會輸出什麼結果?
- 每日小結
一: 前言 |
- 大家好,這裡是IT學習日記,一個非雙一流大學畢業的深漂族,年少曾憧憬大廠,面試過許多家公司,也曾踩過無數坑,深知面試技巧和知識廣度與深度對一個應屆生乃至工作多年的開發者的重要性。
- 故特意收集了各個公司、大廠的面試高頻題,通過每天打卡的方式,和大家一起記錄和學習,希望能夠幫助到應屆生和開發者們少走彎路,一起沖向大廠!!!
二: 面試題目 |
一:請選出下面關于重寫和重載說法正确的選項
- A: 在子類中,如果方法沒有被public修飾符修飾,則該方法不能重載(Overload)
- B: 重寫(Override)隻需要滿足方法名和參數類型相同即可
- C: 重寫(Override)要求方法的方法名、參數(包括參數類型和參數順序)、傳回值類型都要相同
- D: 有相同的方法名、參數名、參數類型則表示該方法被重寫了
答案: C
A選項錯誤: 重載方法與方法的修飾符和傳回值類型無關,隻跟參數清單(包括參數類型、參數順序、參數個數)和方法名有關。
B選項錯誤: 重寫發生在子類與父類或者子類和接口之間,要求如下(簡稱:兩同兩小一大原則):
- 兩同: 表示重寫的參數清單(包括參數類型、參數順序、參數個數)和方法名需要相同。
- 兩小: 表示方法的傳回值類型要小于或等于父類的傳回值類型和方法抛出的異常要小于或等于父類方法抛出的異常
- 一大: 表示重寫的方法通路修飾符要大于或等于父類方法的修飾符
@Override注解時JDK自帶的注解之一,用于重寫的方法之上,如果方法不滿足重寫的條件,則編譯不通過,在重寫方法時,建議添加該注解,提高代碼可讀性。
D選項錯誤: 說法不正确,重寫的方法需要遵循"兩同兩小一大"原則。
二:請選出下面對應重載說法錯誤的選項
- A: 重載方法的方法名必須相同
- B: 重載方法的差別是參數清單(參數個數或者參數類型)
- C: 重載方法的傳回值必須一緻
- D: 重載方法的實作可以不一樣
答案: C (重載隻與方法的參數清單和方法名相關,與方法的傳回值類型和方法修飾符類型無關)
三:請選出下面說法正确的選項
- A: 靜态方法不能被重寫
- B: 靜态方法不能被private修飾
- C: 私有方法不能被重載
- D: 靜态方法不能通過對象進行調用
答案: A
A選項正确: 靜态方法可以被繼承,但是不能被重寫。因為靜态方法是屬于類級别的,在加載到JVM時就已經确定了,但重寫是表現多态的一種方式,通過父類引用指向子類,然後在運作時再确定具體的類型進而執行不同的邏輯。
B選項錯誤: 靜态方法和普通方法一樣可以被public、protected,預設修飾符、private修飾。
C選項錯誤: 重載是表示相同的方法名有不同的參數清單的方法,與傳回值類型和通路修飾符無關。
D選項錯誤: 靜态方法是屬于類級别的方法,可以通過類名和執行個體對象名調用(不推薦使用執行個體調用靜态方法)。
四: 下面那個選項替換到"here"可以讓結果輸出為:son
public class DemoFather {
private String name;
public static void main(String[] args) {
DemoFather item = new DemoSon();
// here
}
}
class DemoSon extends DemoFather{
private String name;
public String output(){
name = "son";
return name;
}
}
- A: System.out.println(item.name);
- B: System.out.println(item.output());
- C: System.out.println(((DemoSon)item).output());
- D: System.out.println((DemoFather)item).output());
答案: C (使用父類引用指向子類,想調用子類的方法,需要将父類類型強制轉換成子類類型再進行調用)
五: 下面代碼執行會輸出什麼結果?
class Parent {
public Parent() {
System.out.println("A");
}
}
public class Son extends Parent {
public Son() {
System.out.println("B");
}
public static void main(String[] args) {
Parent a = new Son();
a = new Parent();
}
}
答案: A B A (因為Son繼承了Parent類,在加載Son類時會先去加載它的父類,是以會先執行父類的構造方法)
每日小結
不積跬步,無以至千裡;不積小流,無以成江海。今天播種努力的種子,總會有一天發芽!
歡迎大家關注,如果覺得文章對你有幫助,不要忘記一鍵三連哦,你的支援是我創作更加優質文章的動力,希望大家都能夠早日拿到心儀的Offer,有任何面試問題可以私信我,歡迎大家投稿面試題目哦!