2016-08-15 190 views
-1
public class A { 
     public String s="A"; 
     public static int i=1; 
    } 
public class B extends A { 
     public String s="B"; 
     public static int i=2; 
public static void main(String [] args) { 
       A a= new B(); 
       B b= new B(); 
       System.out.print(a.s+a.i); 
       System.out.print(b.s+b.i); 
} 
} 

爲什麼輸出是「A1B2」而不是「A1B1」?字段不能被覆蓋,而且靜態字段不能?java覆蓋靜態字段

+2

你不重寫任何東西 - 你**隱藏**字段。 –

+0

「隱藏」可以用靜態字段來完成嗎? – avivlevi

+0

隱藏和重寫有什麼區別? – avivlevi

回答

0

看來你對Overriding的概念感到困惑。

在Java中,就類變量而言,您不會覆蓋它們,您將它們隱藏起來。

覆蓋是例如方法。隱藏是例如變量。

隱藏和重寫都不同。

+1

+1只是因爲這個答案是完全正確的,可能只有被問題作者投了-1,因爲他不明白或者想要聽到答案...... – Alfi