解釋如下:
發(fā)表時(shí)間:2023-08-07 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]基類(lèi)的方法(如此例中Base的構(gòu)造函數(shù))繼承到子類(lèi)后(如果沒(méi)有被覆蓋),方法體中調(diào)用的方法將是子類(lèi)覆蓋后的方法,而方法體中訪(fǎng)問(wèn)的變量仍是基類(lèi)的變量,如果基類(lèi)的變量被隱藏了,則認(rèn)為該變量為0。因此在n...
基類(lèi)的方法(如此例中Base的構(gòu)造函數(shù))繼承到子類(lèi)后(如果沒(méi)有被覆蓋),方法體中調(diào)用的方法將是子類(lèi)覆蓋后的方法,而方法體中訪(fǎng)問(wèn)的變量仍是基類(lèi)的變量,如果基類(lèi)的變量被隱藏了,則認(rèn)為該變量為0。因此在new Extension()時(shí),首先因?yàn)檎{(diào)用基類(lèi)的構(gòu)造函數(shù),而執(zhí)行的是子類(lèi)add(3),同時(shí)由于基類(lèi)的j變量被覆蓋了而被當(dāng)作是0,因此add(3)后,i=3*3+0,所以輸出:In base,i:9。接著執(zhí)行子類(lèi)自己的構(gòu)造函數(shù),執(zhí)行add(2),此時(shí)訪(fǎng)問(wèn)的變量就是子類(lèi)自己的了,因此9+2*3+4=19,所以輸出:In Extension,i:19。最后執(zhí)行b.add(6)。因?yàn)閎實(shí)際引用的Extension類(lèi)型的對(duì)象,因此執(zhí)行的也就是子類(lèi)的add()方法,從而得到:19+6*3+4=41。因此最后有i=41。
再舉個(gè)例,如果子類(lèi)中同時(shí)也聲明一個(gè)i變量,那么最后print()方法(因?yàn)闆](méi)有被覆蓋。)無(wú)論如何輸出的都是0。
這方面的知識(shí),我感覺(jué)有點(diǎn)錯(cuò)綜復(fù)雜.
表達(dá)能力不好.:)不過(guò)希望你能慢慢琢磨透.