java 静态方法中为什么不可以使用关键字this _super_Java static方法里为什么不能使用this关键字,和Super...
Static方法是類方法,先于任何的實(shí)例(對(duì)象)存在。
即Static方法在類加載時(shí)就已經(jīng)存在了(JAVA虛擬機(jī)初始化時(shí)),但是對(duì)象是在創(chuàng)建時(shí)才在內(nèi)存中生成。
而this指代的是當(dāng)前的對(duì)象。
static叫靜態(tài)方法,也叫類方法。
即在程序啟動(dòng)的時(shí)候,就會(huì)為static方法分配一塊內(nèi)存空間,沒有static的其他方法,非靜態(tài)方法,必須在類實(shí)例化時(shí),才有內(nèi)存空間,所以在類實(shí)例化之前是無法調(diào)用的jvm有類加載器,第一次加載類時(shí)執(zhí)行類中的static域,jvm會(huì)專門劃分一個(gè)內(nèi)存區(qū)域給static程序塊,可以成為靜態(tài)區(qū)。
this指針是指向類的對(duì)象,在實(shí)例化對(duì)象時(shí)jvm會(huì)在堆區(qū)分配內(nèi)存給一個(gè)具體的對(duì)象,this指針指向這個(gè)對(duì)象。而類中的static域始終
是在靜態(tài)區(qū)分配內(nèi)存,this指向堆區(qū),所以不能調(diào)用。
static是屬于類的。this是對(duì)象指針。
而?super代表子類對(duì)父類滿參構(gòu)造函數(shù)的初始化,也是需要產(chǎn)生對(duì)象才可以使用
但是考慮到虛擬機(jī)加載順序?yàn)橄燃虞d類,當(dāng)被實(shí)例化才產(chǎn)生對(duì)象。
所以如果并存則表示類和對(duì)象同時(shí)加載,顯然是不合邏輯的。
拙見,有何不足之處請(qǐng)指教,今天做項(xiàng)目的時(shí)候無意中發(fā)現(xiàn)了,實(shí)習(xí)生的一個(gè)錯(cuò)誤,指正并且穩(wěn)固
標(biāo)簽:Java,對(duì)象,方法,實(shí)例,static,jvm,Super,加載
來源: https://blog.csdn.net/qq_33188563/article/details/98732070
總結(jié)
以上是生活随笔為你收集整理的java 静态方法中为什么不可以使用关键字this _super_Java static方法里为什么不能使用this关键字,和Super...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 以下关于java中布局管理说法错误的是_
- 下一篇: java的接口怎么理解_如何理解Java