高频面试题3 类初始化过程与实例初始化
生活随笔
收集整理的這篇文章主要介紹了
高频面试题3 类初始化过程与实例初始化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
類初始化過程
1,一個類要創建實例,需要先加載并初始化該類。main方法所在的類需要先加載和初始化 2,一個子類要初始化需要先初始化父類 3,一個類初始化就是執行<clinit>()方法<clinit>() 方法由靜態類變量顯示賦值代碼和靜態代碼塊組成。類變量顯示賦值代碼和靜態代碼塊代碼從上到下順序執行<clinit>() 方法只執行一次。實例化初始過程
1 實例初始化就是執行<init>()方法 <init>()方法可能重載有多個,有幾個構造器就有幾個<init>()方法 <init>()方法由非靜態實例變量顯示賦值代碼和非靜態代碼塊/對應構造器代碼組成。 非靜態實例變量顯式賦值代碼和非靜態代碼塊代碼從上到下順序執行,而對應構造器的代碼最后執行。 每次創建實例對象,調用對應構造器,執行的就是對應的<init>()方法。 <init>()方法的首行是super()或super(實參列表),即對應父類的<init>()方法類初始化過程:
class Son extends Fathor 該過程執行<clinit>()方法 F.靜態變量/靜態方法順序執行>S.靜態變量/靜態方法順序執行實例化
Son s = new Son(); 實例化son 就要先實例化fathor 子類init()方法先執行super();實例化父類。 F.變量/方法(順序執行)(如果子類實現了方法重寫此處執行的是子類的重寫方法)>無參構造> S..變量/方法(順序執行)>無參構造>方法的重寫override
1 final 靜態 private 都不可以重寫2 子類如果重寫了父類的方法,通過子類對象調用的一定是子類重寫過的代碼非靜態方法默認的調用對象是thisthis對象在構造器或者說inti()方法中就是正在創建的對象。總結
以上是生活随笔為你收集整理的高频面试题3 类初始化过程与实例初始化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DLL中传递STL参数(如Vector或
- 下一篇: 神经网络预测