2016-08-15 3 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