基類的方法(如此例中Base的構(gòu)造函數(shù))繼承到子類后(如果沒有被覆蓋),方法體中調(diào)用的方法將是子類覆蓋后的方法,而方法體中訪問(wèn)的變量仍是基類的變量,如果基類的變量被隱藏了,則認(rèn)為該變量為0。因此在new Extension()時(shí),首先因?yàn)檎{(diào)用基類的構(gòu)造函數(shù),而執(zhí)行的是子類add(3),同時(shí)由于基類的j變量被覆蓋了而被當(dāng)作是0,因此add(3)后,i=3*3+0,所以輸出:In base,i:9。接著執(zhí)行子類自己的構(gòu)造函數(shù),執(zhí)行add(2),此時(shí)訪問(wèn)的變量就是子類自己的了,因此9+2*3+4=19,所以輸出:In Extension,i:19。最后執(zhí)行b.add(6)。因?yàn)閎實(shí)際引用的Extension類型的對(duì)象,因此執(zhí)行的也就是子類的add()方法,從而得到:19+6*3+4=41。因此最后有i=41。 |
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!