【发布时间】:2016-08-15 04:01:13
【问题描述】:
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 inheritance static overriding