java继承中构造方法_java之继承中构造方法总结(文字版)
子父類(lèi)中的構(gòu)造方法的特點(diǎn)
1. 在子類(lèi)構(gòu)造對(duì)象時(shí),發(fā)現(xiàn)訪問(wèn)子類(lèi)構(gòu)造方法時(shí),父類(lèi)也運(yùn)行了.為什么呢?
答:因?yàn)?在子類(lèi)構(gòu)造方法中第一行有一個(gè)默認(rèn)的隱式語(yǔ)句:super();
子類(lèi)的實(shí)例化過(guò)程:子類(lèi)中所有的構(gòu)造方法默認(rèn)都會(huì)訪問(wèn)父類(lèi)中的空參的構(gòu)造方法.
2.為什么子類(lèi)實(shí)例化的時(shí)候要訪問(wèn)父類(lèi)中的構(gòu)造方法呢?
答:因?yàn)?在子類(lèi)繼承了父類(lèi),就獲取到了父類(lèi)中的內(nèi)容,所以在使用父類(lèi)內(nèi)容之前,要先看父類(lèi)是如何對(duì)自己的內(nèi)容進(jìn)行初始化的;所以子類(lèi)在構(gòu)造對(duì)象時(shí),必須訪問(wèn)父類(lèi)中的構(gòu)造方法,為了完成這個(gè)必須的動(dòng)作,就在子類(lèi)構(gòu)造方法中加入了super();語(yǔ)句. ps:如果父類(lèi)中定義了構(gòu)造有參構(gòu)造,卻沒(méi)有定義無(wú)參構(gòu)造,那么在子類(lèi)構(gòu)造方法中必須用super(參數(shù)列表)明確要調(diào)用的父類(lèi)中的構(gòu)造方法.
注意:super語(yǔ)句必須放在子類(lèi)構(gòu)造方法的第一行,因?yàn)楦割?lèi)的初始化動(dòng)作要先完成.
創(chuàng)建子類(lèi)對(duì)象時(shí)初始化過(guò)程:
首先在堆內(nèi)存中開(kāi)辟內(nèi)存空間----->父類(lèi),子類(lèi)默認(rèn)初始化----->子類(lèi)構(gòu)造進(jìn)棧----->執(zhí)行第一行super()----->父類(lèi)構(gòu)造進(jìn)棧
----->父類(lèi)顯示初始化----->父類(lèi)構(gòu)造代碼塊初始化----->父類(lèi)構(gòu)造方法初始化----->父類(lèi)構(gòu)造方法執(zhí)行完畢----->回到子類(lèi)構(gòu)造
----->子類(lèi)顯式初始化----->子類(lèi)構(gòu)造代碼塊初始化----->子類(lèi)構(gòu)造方法初始化----->子類(lèi)構(gòu)造方法執(zhí)行完畢----->初始化完成.
另外說(shuō)一點(diǎn):不管是在子類(lèi)還是父類(lèi)的方法中,如果默認(rèn)有this的,那么這個(gè)this都指向子類(lèi)對(duì)象,也就是說(shuō),在父類(lèi)的方法中,如果有this的(也可以說(shuō)是沒(méi)有被static修飾的),都是指向了子類(lèi)的對(duì)象所在的內(nèi)存區(qū)域,而不是父類(lèi),因?yàn)檫@個(gè)時(shí)候就沒(méi)有父類(lèi)對(duì)象.
---------------------
作者:hurricane_ning
來(lái)源:CSDN
原文:https://blog.csdn.net/weixin_36898943/article/details/79762489
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的java继承中构造方法_java之继承中构造方法总结(文字版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java开发变化_十年编程语言变化,大众
- 下一篇: java中map可以为空吗_Java: