類初始化過程和實例初始化過程。


時隔半年又去面試了一下,發現很多基礎知識都忘了,補補。

先看一個例子:

結果如下:

解釋如下:

類初始化過程:

1.一個類要創建實例需要先加載並初始化該類。

  main方法所在的類需要先加載和初始化。

2.一個子類初始化需要先初始化父類。

3.一個類初始化就是執行<clinit>()方法。

  <clinit>()方法由靜態類變量顯示賦值代碼和靜態代碼塊組成。

  類變量顯示賦值代碼和靜態代碼塊代碼從上到下順序執行。

  <clinit>()方法只執行一次。

 

實例初始化過程:

1.實例初始化就是執行<init>()方法過程。

  <init>()方法可能重載有多個,有幾個構造器就有幾個<init>()方法。

  <init>()方法由非靜態實例變量顯示賦值代碼和非靜態代碼塊、對應構造器代碼組成。

  非靜態實例變量顯示賦值代碼和非靜態代碼從上到下執行,對應的構造器最后執行。

  每次創建實例對象,調用對應構造器,執行對應<init>()方法。

  <init>()方法的首行是super()或super(實參列表),即對應的父類<init>()方法。

 

方法的重寫Override

1.哪些方法不可以被重寫:

  final方法、靜態方法、private等子類不可見方法。

2.對象的多態性:

  子類如果重寫了父類的方法,通過子類對象調用的一定是子類重寫的代碼。

  非靜態方法默認的調用對象是this。

  this對象在構造器或者說<init>()方法中就是正在創建的對象。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM