Thinking in Java : 7.複用類

轉載於:http://blog.csdn.net/ZJDWHD/article/details/52441298

其他的就不想再貼過來了,就只寫一下自己覺得重要的,詳細的請去上面鏈接看。

7. final關鍵字 
    根據上下文環境,關鍵字final的含義存在着細微的差別,但通常它指的是“這是無法改變的。”不想做改變可能處於兩種原因:設計或效率。由於這兩個原因相差很遠,所以關鍵字final可能會被誤用。可能使用final的三種情況:數據、方法、類。 

     1.數據:數據不可更改

     2.方法:方法不可覆蓋

     3.類:類不可繼承,沒有子類

8.含有繼承的初始化

看一下代碼,好好琢磨一下:

class Insect {
  private int i = 9;
  protected int j;
  Insect() {
    print("i = " + i + ", j = " + j);
    j = 39;
  }
  private static int x1 =
    printInit("static Insect.x1 initialized");
  static int printInit(String s) {
    print(s);
    return 47;
  }
}

public class Beetle extends Insect {
  private int k = printInit("Beetle.k initialized");
  public Beetle() {
    print("k = " + k);
    print("j = " + j);
  }
  private static int x2 =
    printInit("static Beetle.x2 initialized");
  public static void main(String[] args) {
    print("Beetle constructor");
    Beetle b = new Beetle();
  }
}
/**
  * static Insect.x1 initialized
  * static Beetle.x2 initialized
  * Beetle constructor
  * i = 9, j = 0
  * Beetle.k initialized
  * k = 47
  * j = 39
*/
重要:初始化順序:父類static變量 - 子類static變量(因爲子類的初始化可能依賴於基類是否被正確初始化),然後按照main函數中的聲明來初始化,若沒有創建子類對象,則不會執行構造函數。可結合上面的樣例代碼來理解。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章