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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

构造方法的调用顺序和成员变量的初始化时机以及动态绑定

發(fā)布時(shí)間:2023/12/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 构造方法的调用顺序和成员变量的初始化时机以及动态绑定 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ?構(gòu)造方法的調(diào)用順序:子類構(gòu)造器中,JVM會(huì)自動(dòng)的先調(diào)用父類的構(gòu)造方法,然后再執(zhí)行子類構(gòu)造方法。在JVM自動(dòng)調(diào)用父類構(gòu)造方法的時(shí)候,會(huì)完成父類中擁有的成員變量的值的初始化操作,此時(shí)子類的成員變量并未初始化,java中基本類型都會(huì)使用JVM給定的默認(rèn)值(如int為0),只有當(dāng)父類構(gòu)造方法調(diào)用結(jié)束,并到執(zhí)行子類構(gòu)造器時(shí)才會(huì)進(jìn)行子類成員變量的初始化過程。

? ? ?動(dòng)態(tài)綁定:對(duì)于非private、static、final修飾的方法,JVM是在運(yùn)行期間,用函數(shù)指針指向?qū)嵙?xí)對(duì)象類型的方法。比如,子類重寫了父類的A方法,使用父類Upper的引用upper指向了子類Sub對(duì)象,然后upper.A(),實(shí)際調(diào)用的類Sub中A方法。我是這樣理解的,子類和父類中都有方法A,并且子類是通過重寫的方式實(shí)現(xiàn)了A,所以子類對(duì)象原本Upper中指向方法A的指針和Sub類中指向A的指針是通過同一個(gè)函數(shù)指針,兩次賦值。就是指針point值被替換了,不是把父類的函數(shù)指針隱藏了,而是相當(dāng)于兩次給指針賦值,第一次使用父類A方法的指針賦給point,第二次使用子類A方法的指針賦給point(以上純屬自己的理解,如果不真確歡迎給位老師指點(diǎn),因?yàn)樽约哼€是剛?cè)胄?#xff09;。所以每一父類的方法的地址被子類方法的地址替換了。

demo:

Upper Code:

1 package com.hq.dynamicBind; 2 3 public class Upper { 4 5 private int i = 1; 6 7 public void print(){ 8 System.out.println("i="+i); 9 } 10 11 public Upper(){ 12 System.out.println("父類構(gòu)造函數(shù)開始"); 13 System.out.println("i="+i); 14 print(); 15 System.out.println("父類構(gòu)造函數(shù)嗲用print()結(jié)束"); 16 i = 30; 17 } 18 }

Sub Code:

1 package com.hq.dynamicBind; 2 3 public class Sub extends Upper { 4 5 private int j = 20; 6 7 public void print() { 8 System.out.println("j="+j); 9 } 10 11 public Sub(){ 12 System.out.println("成員變量j="+j); 13 print(); 14 j = 40; 15 } 16 17 }

Client Code:

1 package com.hq.dynamicBind; 2 3 public class Client { 4 5 public static void main(String[] args ){ 6 new Sub().print(); 7 } 8 }

執(zhí)行結(jié)果:

父類構(gòu)造函數(shù)開始
i=1
父類構(gòu)造函數(shù)嗲用print()結(jié)束
成員變量j=20
j=20
j=40

?

轉(zhuǎn)載于:https://www.cnblogs.com/lingxiasandu/archive/2013/04/19/3029892.html

總結(jié)

以上是生活随笔為你收集整理的构造方法的调用顺序和成员变量的初始化时机以及动态绑定的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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