亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

static 靜態方法使用

http://img1.sycdn.imooc.com//5a5d770e0001900507840675.jpg請問這里為什么不能用類名+方法名();調用

正在回答

3 回答

誰說的呀,靜態方法即可以用對象調用,也可以用類名直接調用http://img1.sycdn.imooc.com//5a65c6da0001906e04500407.jpg

0 回復 有任何疑惑可以回復我~
#1

xcopfans

噢噢噢~我看錯了不好意思,因為你的方法不是靜態方法啊,用類名調用當然會失敗了
2018-01-22 回復 有任何疑惑可以回復我~
#2

xcopfans

再跟你說深一點。在內存中,由static修飾的靜態語句是隨著著類一起加載的,無論是靜態方法還是靜態屬性,或是靜態代碼塊。 而普通方法,是由對象的創建才跟著加載進內存,所以只能是由對象調用。 這也就解釋了為什么在靜態方法中,不能使用非靜態的東西,因為靜態方法加載的時候,對象可能還沒被創建,那它還調個球球哦!
2018-01-22 回復 有任何疑惑可以回復我~

這是我在百度上找的,希望對你有點幫助:

在靜態方法中,不能直接訪問非靜態成員(包括方法和變量)。因為,非靜態的變量是依賴于對象存在的,對象必須實例化之后,它的變量才會在內存中存在。例如一個類 Student 表示學生,它有一個變量String address。如果這個類沒有被實例化,則它的 address 變量也就不存在。而非靜態方法需要訪問非靜態變量,所以對非靜態方法的訪問也是針對某一個具體的對象的方法進行的。對它的訪問一般通過 objectName.methodName(args……) 的方式進行。而靜態成員不依賴于對象存在,即使是類所屬的對象不存在,也可以被訪問,它對整個進程而言是全局的。因此,在靜態方法內部是不可以直接訪問非靜態成員的。

0 回復 有任何疑惑可以回復我~

運用對象名+方法名();運行是成功的,但是不明白為什么改成類名就不可以。


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531220    人
  • 解答問題       6327    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程

static 靜態方法使用

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號