類的例項化有兩種方法:
1. dog d = new dog() 自動呼叫無參建構函式
2.通過反射
class.forname("com.vo.dog").newinstance();
此種方法只能呼叫無參建構函式,假如函式只有帶參建構函式,就要使用以下的方式:
constructor<?> c = class.forname("com.vo.dog").getconstructor(int.class);
object newinstance = c.newinstance(2);
例項化的行為:
如果是第一次例項化該類,jvm會首先會執行「類載入」:檢查該類的父類是否「註冊」,否則進行「類載入」生成
父類的class物件並執行靜態**(包括靜態變數初始化以及靜態塊)。然後對該類「執行註冊」。註冊完畢後
進行例項化過程,jvm在堆中開闢乙個合適大小的空間,生成例項。最後執行初始化過程,同樣按照先父類再
子類的順序執行建構函式。
示例:
public class dog extends animal
public dog()
}public class animal
public animal()
}
test: 執行 dog = new dog()
output:
animal-i'm static blog
dog-i'm static blog
animal-initialize
dog-initialize
類初始化過程
class x class y public class z extends x public static void main string args a zyxxb zyxyc yxyzd xyzx解答 靜態變數 靜態 塊 main方法 非靜態變數 塊 構造方法 初始化過程 1.初始化父類中的靜...
類的初始化過程
類的初始化過程中有兩個比較重要的方法 void load void initialize 這兩個方法是自動呼叫的 分類 分類中也是包含 void load 方法和 void initialize 方法的,不同的是 分類的 load 方法在程式啟動的時候也會呼叫,但是如果分類有 initialize ...
類初始化和例項初始化過程
類初始化過程 乙個類要建立例項需要先載入並初始化該類 main方法所在的類需要先載入和初始化 乙個子類要初始化需要先初始化父類 乙個類初始化就是執行 方法 由靜態類變數賦值 和靜態 塊組成 靜態類變數賦值 和靜態 塊從上往下執行 方法只執行一次 例項初始化過程 例項初始化就是執行 方法 方法可能過載...