構造函數,構造代碼塊和靜態代碼塊的先後順序和運用
阿新 • • 發佈:2017-07-12
images pri 如果 什麽 存在 png 屬性 pack ges
在自學到java面向對象時,知道有靜態代碼塊,構造代碼塊和構造函數的存在,如果說構造函數是初始化對象,那麽其他2者又是怎麽使用,又有什麽區別呢。簡單的舉了下面的例子:
1 package 面向對象; 2 3 class Child 4 { 5 private String country; 6 private String name; 7 Child(String name)//構造函數。 8 { 9 this.name=name; 10 System.out.println(this.name); 11 }12 static //靜態代碼塊 13 { 14 System.out.println("哈哈"); 15 } 16 {//構造代碼塊。 17 country="中國"; 18 System.out.println(country); 19 } 20 } 21 public class ChildTest 22 { 23 public static void main(String[] args) 24 { 25 Child XiaoMing=new Child("小明");26 Child XiaoWang=new Child("小王"); 27 } 28 }
打印的結果為
所以可以看出先後順序為靜態代碼塊,構造代碼塊,構造函數。
其中靜態代碼塊只隨著類的加載加載一次,一般就用於初始化類。
構造代碼塊每個對象出現時加載一次,不能改變,一般為初始化對象共同的固有的屬性。
構造函數每個對象出現時加載一次,可以加入參數改變變量,一般用於初始化對象的屬性。
構造函數,構造代碼塊和靜態代碼塊的先後順序和運用