java 覆盖静态字段
java overriding static fields
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中,就class变量而言,你不覆盖它们,你隐藏它们。
Overriding is for instance methods. Hiding is for instance variables.
隐藏和覆盖是不同的。
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中,就class变量而言,你不覆盖它们,你隐藏它们。
Overriding is for instance methods. Hiding is for instance variables.
隐藏和覆盖是不同的。