日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java构造方法和实例化,10. JavaSE-子类实例化过程 构造方法间调用

發(fā)布時間:2023/12/10 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java构造方法和实例化,10. JavaSE-子类实例化过程 构造方法间调用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

子類的實例化過程:

子類中所有的構(gòu)造函數(shù)默認都會訪問父類中空參數(shù)的構(gòu)造函數(shù)。

class?Parent

{

Parent(){

System.out.println("parent?class?run");

}

}

class?Children?extends?Parent

{

Children(){

//super();//調(diào)用的就是父類空參數(shù)的構(gòu)造函數(shù)

System.out.println("children?class?run");

//return;

/*說明:此處被注釋掉的super和return都是默認就有的語句。*/

}

}

class? DemoChildren

{

public?static?void?main(String[]?args)

{

System.out.println("Hello?World!");

}

}

為什么子類實例化的時候要訪問父類構(gòu)造函數(shù)?

因為子類繼承父類,獲取到了父類中內(nèi)容(屬性),所以在使用父類內(nèi)容之前,要先看父類是如

何對自己的內(nèi)容進行初始化的。所以子類在構(gòu)造對象時,必須訪問父類中的構(gòu)造函數(shù)。為了完成

這個必須得動作,就在子類的構(gòu)造函數(shù)中加入super()語句。如果父類中沒有定義空參數(shù)的構(gòu)造函

數(shù),那么子類的構(gòu)造函數(shù)必須用super明確調(diào)用父類中的哪個構(gòu)造函數(shù)。同時子類構(gòu)造函數(shù)中如果

使用this調(diào)用了本類構(gòu)造函數(shù)時,那么super就沒有了,因為super和this都只能定義在第一行,所以

只能有一個,但是可以保證的是,子類中肯定會有其他的構(gòu)造函數(shù)訪問父類的構(gòu)造方法。

注意:super語句必須要定義在子類構(gòu)造函數(shù)的第一行,因為父類的初始化動作要先完成。

Java中,所有的類都是Object的子類。Object是最頂層的類,也就是Java中的God。

一個對象的實例化過程:

1.?JVM讀取指定路徑下的.class文件,并加載進內(nèi)存,并會先加載父類(如果有直接父類的情況下)

2.?在堆內(nèi)存中開辟空間,分配地址

3.?并在對象空間中,對對象中的屬性進行默認初始化

4.?調(diào)用對應(yīng)的構(gòu)造函數(shù)進行初始化

5.?在構(gòu)造函數(shù)中,第一行會先調(diào)用父類中的構(gòu)造函數(shù)進行初始化

6.?父類初始化完畢后,在對子類的屬性進行顯示初始化

7.?在進行子類構(gòu)造函數(shù)的特定初始化

8.?初始化完畢后,將地址賦值給引用變量

注意:通過super初始化父類內(nèi)容時,子類的成員變量并未顯式初始化,等super()父類初始化完

畢后,才進行子類的成員變量顯示初始化。

構(gòu)造函數(shù)之間互相調(diào)用:

類中構(gòu)造函數(shù)之間可以相互調(diào)用。

class?Parent

{

Parent(){

System.out.println("parent?class?run");

}

}

class?Children?extends?Parent

{

Children(){

this(20);

System.out.println("children?class?run");

}

Children(int age){

System.out.println("This boy age is "+age);

}

}

class? DemoChildren

{

public?static?void?main(String[]?args)

{

new Children();

// System.out.println("Hello?World!");

}

}

總結(jié)

以上是生活随笔為你收集整理的java构造方法和实例化,10. JavaSE-子类实例化过程 构造方法间调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。