題目
–來自《Java程序員面試寶典》
- 抽象類(abstract class) 與 接口 (interface)有什麼異同
- 內部類有哪些
- 如何獲取父類的類名
- this 與 super 有什麼區別
- 變量命名有哪些規則
- break,continue 以及 return 有什麼區別
- final finally finalize 有什麼區別
- assert 有什麼作用
- static 關鍵字的作用
- switch 注意事項
題目及答案
- 抽象類(abstract class) 與 接口 (interface)有什麼異同
答:接口中所有的方法隱含的都是抽象的。而抽象類則可以同時包含抽象和非抽象的方法。
類可以實現很多個接口,但是隻能繼承一個抽象類
類可以不實現抽象類和接口聲明的所有方法,當然,在這種情況下,類也必須得聲明成是抽象的。
抽象類可以在不提供接口方法實現的情況下實現接口。
Java接口中聲明的變量默認都是final的。抽象類可以包含非final的變量。
Java接口中的成員函數默認是public的。抽象類的成員函數可以是private,protected或者是public。
接口是絕對抽象的,不可以被實例化,抽象類也不可以被實例化。 - 內部類有哪些
答:內部類就是將一個類定義到另一個類的內部。主要有4種:靜態內部類,成員內部類,局部內部類,匿名內部類。靜態內部類與靜態方法類似,符合靜態方法的特點。去掉static的內部類叫做成員內部類,與普通方法使用類似。將成員內部類放到外部類的方法中是就是局部內部類。作用域也和方法內部的局部變量相同。匿名內部類必須要在 new 的後面且匿名類必須實現接口或者繼承一個類。匿名類不能有構造函數,靜態成員,方法,類。 - 如何獲取父類的類名
答:Java提供 getClass().getName()方法獲取當前的運行類的類名(一定是當前運行類的類名)。使用super.getClass().getName()獲取的還是當前的類名。所以獲取父類只能通過反射機制 getClass().getSuperclass().getName()獲取父類名了。 - this 與 super 有什麼區別
答:this 指向當前類的實例 ,super指向父類的實例。this的典型使用就是setter 和 getter 方法。super常用到獲取父類的成員方法或變量。當子類構造函數需要顯示的調用父類構造函數時,必須顯示的聲明在第一條語句。 - 變量命名有哪些規則
答:Java的變量名必須由字母或數字或下劃線或美元符組成。開頭必須是字母或下劃線或美元符。 - break,continue 以及 return 有什麼區別
答:break 結束當前層的循環,嵌套到內層只能結束當前內層循環;continue 結束本次直接跳到下一次循環。return 直接返回結構,任何循環都終止。 - final finally finalize 有什麼區別
答:final 聲明 類,方法 ,變量,並保證其內存指向的不可變性,具體可轉一文讀懂 final。finally只能出現在異常執行的代碼塊try/catch中。放到異常的最後塊,無論執行try或者catch都會進入finally塊,常用與關閉文件流,斷開連接等。finalize 是 Object 類的一個方法,垃圾回收器調用 被回收對象的finalize() 方法。 - assert 有什麼作用
答: - static 關鍵字
答:一文搞懂static - switch 注意事項
答: