java中static方法能否被重寫


今天在Github上看到這樣一句話讓我一下沒反應過來:如果父類方法訪問修飾符為 private/final/static 則子類就不能重寫該方法,但是被 static 修飾的方法能夠被再次聲明。

我尋思着static方法不是不能重寫嗎?於是做了如下實驗:

 1 class Base {
 2     public static String staticBase() {
 3         return "Base-staticBase()";
 4     }
 5 
 6     public String normal() {
 7         return "Base-normal()";
 8     }
 9 }
10 
11 class Son extends  Base{
12     public static String staticBase() {
13         return "Son-staticBase()";
14     }
15 
16     public String normal() {
17         return "son-normal()";
18     }
19 }
20 
21 public class StaticTest {
22     public static void main(String[] args) {
23         Base son = new Son();
24         System.out.println(son.staticBase());
25         System.out.println(son.normal());
26     }
27 }

 

結果如下:

  

可以看見靜態方法依舊沒有被重寫,他只是被重復聲明,相當於另一個方法,與原來不相干,寫着寫着突然明白了...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM