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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 类中可以覆盖静态方法吗?

發(fā)布時間:2025/3/21 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 类中可以覆盖静态方法吗? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Java 類中可以覆蓋靜態(tài)方法嗎?

不,你不能在Java中覆蓋靜態(tài)方法,但在子類中聲明一個完全相同的方法不是編譯時錯誤,這稱為隱藏在Java中的方法。

你不能覆蓋Java中的靜態(tài)方法,因為方法覆蓋基于運行時的動態(tài)綁定,靜態(tài)方法在編譯時使用靜態(tài)綁定進行綁定。

雖然可以在子類中聲明一個具有相同名稱和方法簽名的方法,看起來可以在Java中覆蓋靜態(tài)方法,但實際上這是方法隱藏。

Java不會在運行時解析方法調用,并且根據(jù)用于調用靜態(tài)方法的 Object 類型,將調用相應的方法。

這意味著如果你使用父類的類型來調用靜態(tài)方法,那么原始靜態(tài)將從父類中調用,另一方面如果你使用子類的類型來調用靜態(tài)方法,則會調用來自子類的方法。父類強制轉換子類原則,這篇推薦看下。

簡而言之,你無法在Java中覆蓋靜態(tài)方法。如果你使用像Eclipse或Netbeans這樣的Java IDE,它們將顯示警告靜態(tài)方法應該使用類名而不是使用對象來調用,因為靜態(tài)方法不能在Java中重寫。

/**??*??*?Java?program?which?demonstrate?that?we?can?not?override?static?method?in?Java.??*?Had?Static?method?can?be?overridden,?with?Super?class?type?and?sub?class?object??*?static?method?from?sub?class?would?be?called?in?our?example,?which?is?not?the?case.??*/?? public?class?CanWeOverrideStaticMethod?{??public?static?void?main(String?args[])?{??Screen?scrn?=?new?ColorScreen();??//if?we?can??override?static?,?this?should?call?method?from?Child?class??scrn.show();?//IDE?will?show?warning,?static?method?should?be?called?from?classname??}??}??class?Screen{??/*??*?public?static?method?which?can?not?be?overridden?in?Java??*/??public?static?void?show(){??System.out.printf("Static?method?from?parent?class");??}?? }??class?ColorScreen?extends?Screen{??/*??*?static?method?of?same?name?and?method?signature?as?existed?in?super??*?class,?this?is?not?method?overriding?instead?this?is?called??*?method?hiding?in?Java??*/??public?static?void?show(){??System.err.println("Overridden?static?method?in?Child?Class?in?Java");??}?? }??

輸出: ?
Static method from parent class

此輸出確認你無法覆蓋?Java?中的靜態(tài)方法,并且靜態(tài)方法基于類型信息而不是基于 Object 進行綁定。

如果要覆蓋靜態(tài)方法,則會調用子類或 ColorScreen 中的方法。這一切都在討論中我們可以覆蓋?Java?中的靜態(tài)方法。我們已經(jīng)確認沒有,我們不能覆蓋靜態(tài)方法,我們只能在Java中隱藏靜態(tài)方法。

創(chuàng)建具有相同名稱和方法簽名的靜態(tài)方法稱為Java?隱藏方法。IDE 將顯示警告:"靜態(tài)方法應該使用類名而不是使用對象來調用", 因為靜態(tài)方法不能在 Java 中重寫。

作者:Yujiaao
https://segmentfault.com/a/1190000019962661

總結

以上是生活随笔為你收集整理的Java 类中可以覆盖静态方法吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

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