java筆試錯題記錄——2020-10-13

水巷石子發表於2020-10-13
  1. 在Java中下面Class的宣告哪些是錯誤的?

正確答案: A B C 你的答案: A B (錯誤)

public abstract final class Test {
	abstract void method();
}
public abstract class Test {
	abstract final void method();
}
public abstract class Test {
	abstract void method() {
}
}
public class Test {
	final void method() {

}
}

解析:

A、final修飾的類為終態類,不能被繼承,而 抽象類是必須被繼承的才有其意義的,因此,final是不能用來修飾抽象類的。

B、 final修飾的方法為終態方法,不能被重寫。而繼承抽象類,必須重寫其方法。

C、抽象方法是僅宣告,並不做實現的方法。

  1. 有關靜態初始化塊說法正確的是?
# 正確答案: A B C  你的答案: A C (錯誤)

```
無法直接呼叫靜態初始化塊
在建立第一個例項前或引用任何靜態成員之前,將自動呼叫靜態初始化塊來初始化
靜態初始化塊既沒有訪問修飾符,也沒有引數
在程式中,使用者可以控制合適執行靜態初始化塊
```

解析:

java物件初始化順序
先說結論:

  1. 父類靜態程式碼塊,父類靜態成員變數(同級,按程式碼順序執行)
  2. 子類靜態程式碼塊,子類靜態成員變數(同級,按程式碼順序執行)
  3. 父類普通程式碼塊,父類普通成員變數(同級,按程式碼順序執行)
  4. 父類構造方法
  5. 子類普通程式碼塊,子類普通成員變數(同級,按程式碼順序執行)
  6. 子類構造方法

注意點:

  1. 靜態內容只在類載入時執行一次,之後不再執行。
  2. 預設呼叫父類的無參構造方法,可以在子類構造方法中利用super指定呼叫父類的哪個構造方法。

相關文章