日韩在线免费播放-日韩在线免费av-日韩在线免费-日韩在线毛片-国产高清不卡视频-国产高清不卡

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > Java對象構造和初始化過程

Java對象構造和初始化過程 時間:2018-09-27      來源:未知

對于Java對象的構造和初始化過程的理解,我們可以先掌握如下規則:

1)在進入main方法之前類加載時,執行static修飾的靜態代碼塊,并且只執行一次。先執行父類靜態代碼塊再執行子類靜態代碼塊。

2)執行父類初始化塊(游離塊),構造方法。

本文引用地址://www.bsfkj.cn/emb/Column/7449.html

初始化塊,每創建一個對象調用一次。

如果構造方法中使用this()調用其他構造方法,該行代碼必須放在構造方法中第一行。

3)執行子類初始化塊(游離塊),構造方法。

初始化塊,每創建一個對象調用一次。

在子類構造方法中,如果沒有通過super顯式調用父類構造方法,則默認調用父類無參構造方法;如果通過super顯示調用父類構造方法,該代碼必須放在第一行。

舉例說明如下:

創建父類Person.java

public class Person {

private String name;

private int age;

private String sex;

static{

System.out.println("這是靜態代碼塊Person");

}

{

System.out.println("這是自由代碼塊Person");

}

//第一個構造方法

public Person(){

System.out.println("Person()");

}

//第二個構造方法

public Person(String name,int age){

System.out.println("Person(String name,int age)");

this.age = age;

this.name = name;

}

//第三個構造方法

public Person(String name,int age,String sex){

this(name,age);

System.out.println("Person(String name,int age,String sex)");

this.sex = sex;

}

}

創建子類Student.java

public class Student extends Person {

static{

System.out.println("這是靜態代碼塊Student");

}

{

System.out.println("這是自由代碼塊Student");

}

//第一個構造方法

public Student(String name,String sex,int age){

super(name,age,sex);

System.out.println("Student(String name,String sex,int age)");

}

//第二個構造方法

public Student(){

System.out.println("Student()");

}

}

創建測試類Test.java

public class Test {

public static void main(String[] args) {

Student s = new Student("violet","female",33);

Student s1 = new Student();

}

}

運行輸出結果如下:

這是靜態代碼塊Person //第一行

這是靜態代碼塊Student //第二行

這是自由代碼塊Person //第三行

Person(String name,int age) //第四行

Person(String name,int age,String sex) //第五行

這是自由代碼塊Student //第六行

Student(String name,String sex,int age) //第七行

這是自由代碼塊Person //第八行

Person() //第九行

這是自由代碼塊Student //第十行

Student() //第十一行

解釋說明如下:

1)在類加載時,也就是執行main方法之前執行靜態代碼塊,只執行一次,所以輸出//第一行、//第二行。

2)當我們執行main函數中Student s = new Student("violet","female",33);語句時,先調用父類初始化塊,輸出//第三行。

再調用父類構造方法,在Studet.java第一個構造方法中通過super(name,sex,age)調用父類Person.java中第三個構造方法,該構造方法中第一行代碼this(name,age)指向第二個構造方法,所以先執行第二個構造方法,輸出//第四行。第二個構造方法執行結束,返回到第三個構造方法,輸出//第五行

父類構造方法執行完畢,返回到Student.java類。先執行初始化塊,輸出//第六行。再執行第一個構造方法里,輸出//第七行。

3)當我們執行main函數中Student s1 = new Student();語句時,先調用父類初始化塊,輸出//第八行。

再執行父類構造方法,在Student.java第二個構造方法里,沒有通過super()顯示調用父類某個構造方法,此時默認調用父類無參構造方法。所以輸出//第九行。

父類構造方法執行完畢,返回到Student.java類。先執行初始化塊,輸出//第十行。再執行第二個構造方法,輸出//第十一行。

上一篇:Java中的Class類

下一篇:Linux下字符設備驅動

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 9号房间| 热血街区| cctv五+频道在线直播节目单| 欲孽迷宫电影| 消防稳压罐安装图正规安装图| 高嘉慧| 电影绿色地狱| 石锐| 出轨的女人电影| 散文诗二首批注| 周星驰的全部电影免费观看| 被侵犯| 少林问道演员表| 意大利∴多情少妇| 谢锐韬个人资料| 性女贞德| 王牌替身免费观看全集| 电影智取华山| 孤独感爆满的头像| 吴妍儿| 无声真相电影免费播放| 男人亲女人下面的视频| 音乐僵尸| 板谷由夏| 《满意度》电影免费观看| 高冷女头| 电影土耳其狂欢| 朱莉·德尔佩| 行则将至上一句| 电影土耳其狂欢| 新闻女郎| 易烊千玺个人资料简介| 卜冠今| 69视频免费看| 《小道童》舞蹈| 禁忌爱游戏| 成人免费黄色电影| 深夜影院一级毛片| be helpful at home| 王尧演员| alexandra hedison|