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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

为什么静态成员、静态方法中不能用this和super关键字

發布時間:2024/4/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么静态成员、静态方法中不能用this和super关键字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么靜態成員、靜態方法中不能用this和super關鍵字

1.?????在靜態方法中是不能使用this預定義對象引用的,即使其后邊所操作的也是靜態成員也不行.
因為this代表的是調用這個函數的對象的引用,而靜態方法是屬于類的,不屬于對象,靜態方法成功加載后,對象還不一定存在

?

2.?????在問題之前先講super的用法:
1.super的用法跟this類似,this代表對本類對象的引用,指向本類已經創建的對象;而super代表對父類對象的引用,指向父類對象;
2.靜態優先于對象存在;
3.由上面的1.和2.知:
因為靜態優先于對象存在,所以方法被靜態修飾之后方法先存在,而方法里面要用到super指向的父類對象,但是所需的父類引用對象晚于該方法出現,也就是super所指向的對象沒有,當然就會出錯。
綜上,靜態方法中不可以出現super關鍵字。

?

3.?首先你要明白對象和類的區別。
this和super是屬于對象范疇的東西,而靜態方法是屬于類范疇的東西
所有的成員方法,都有一個默認的的參數this(即使是無參的方法),只要是成員方法,編譯器就會給你加上this這個參數如:
Class A中
void method1(){}實際上是這樣的--------> void method1(A this)
void method2(int x){}實際上是這樣的--------> void method2(A this, intx)
而靜態方法與對象無關,根本不能把對象的引用傳到方法中,所以不能用this

?

?

4.?????在一個類中定義一個方法為static,則為靜態方法,那就是說,無需本類的對象即可調用此方法,調用一個靜態方法就是“類名.方法名

既然"無需本類的對象即可調用靜態方法",而this和super關鍵字都是用于本類對象的-----調用靜態方法無需本類的對象這句話很清楚表明:靜態方法中不能用this和super關鍵字

?

5.?????靜態方法是存放在內存中的數據段里,this和super調用的是堆空間里的應用對象不能調用數據段區域里的數據,因此靜態方法中不能用this和super關鍵字

?

6.?????靜態方法和靜態類不屬于單個對象,而是類的所有對象共享使用
this代表當前對象

?

7.???東西只屬于類,不屬于任何對象,所以不能用THIS和SUPER。

轉載于:https://www.cnblogs.com/CrisZjie180228/p/8758925.html

總結

以上是生活随笔為你收集整理的为什么静态成员、静态方法中不能用this和super关键字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。