單態和繼承

                          [6]單態和繼承


一.static關鍵字

1.什麼是static關鍵字

  • static代表靜態的, 可以修飾類的成員, 都和類加載有關.

* 2.靜態變量

  • 類加載後初始化

  • 可以通過"類名.變量名"訪問

  • 被該類所有實例共享

  • 當定義一個變量希望被共享, 或者類加載後就能使用時, 就定義爲靜態的.

* 3.靜態方法

  • 類加載後可以調用

  • 可以通過"類名.方法名"訪問

  • 不能使用外部非靜態成員

  • 當定義一個方法時, 這個方法不訪問外部任何非靜態成員, 就可以定義爲靜態的, 這樣做不用再創建對象就能使用.

4.靜態代碼塊

  • 類加載後就執行

  • 不能使用外部非靜態成員

  • 當有一些代碼希望在類加載之後就執行, 且只執行一次的時候, 就可以定義爲靜態代碼塊.


二.垃圾回收

1.finalize

  • 在一個類中寫了finalize方法之後, 對象銷燬時會執行這個方法中的代碼

2.gc

  • System.gc()可以通知虛擬機銷燬內存中的垃圾對象


三.單態設計模式

1.什麼是單態設計模式

  • 當定義一個類, 而希望這個類只能創建一個對象時, 可以使用單態設計模式

2.單態設計模式的寫法

  • 私有化構造函數

  • 類內部創建對象, 用成員變量引用, 私有化防止類外修改

  • 提供一個公有的靜態的方法, 讓類外可以獲取到該對象


四.繼承

1.什麼是繼承

  • 一個類可以使用extends繼承另一個類, 子類繼承父類之後得到父類的所有成員. 提高代碼複用性.

2.繼承的特點

  • Java只支持單繼承, 不支持多繼承, 但是可以多重繼承.

*** 3.類型轉換

  • 子類對象可以當作父類對象使用, 因爲父類有的子類都有.

  • 一個父類引用可以指向一個子類對象, 但是這時不能調用子類特有的方法.

  • 子類當父類用時, 如果要調用子類特有的方法, 可以使用強制類型轉換將父類變量強轉回子類.

  • 強制類型轉換時, 不論類型是否匹配, 編譯都不會報錯, 運行時類型不匹配會拋出異常ClassCastException

  • 在強制類型轉換之前, 通常都使用instanceof進行類型判斷. 

*** 4.重寫方法

  • 子類覆蓋父類的方法時, 返回值類型, 方法名, 參數列表必須全部相同.

  • 不能定義更低的訪問權限.

  • 可以使用"super.方法名"訪問父類的方法.

  • 在調用一個對象的方法時, 該對象是哪個類的對象就先找哪個類, 如果這個類中有指定方法就執行, 沒有就找父類.

  • 在重寫方法時, 可以使用@Override來檢查當前方法是否成功覆蓋父類方法, 如果沒有覆蓋, 編譯會報錯.

*** 5.子類對象的創建

  • 創建子類對象的時候, 會先創建一個父類對象. 

  • 在執行子類構造函數的時候, 會先執行父類構造函數.

  • 通過super()可以調用父類構造函數, 如果不指定, 那麼就調用無參的.

  • super()和this()相同, 都只能是構造函數的第一個語句. 二者不能同時出現在一個構造函數中.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章