java基础之变量覆盖?
很多人还在想这样一个问题:java的变量能被覆盖吗?
其实java的覆盖是指方法来说的,变量是不能覆盖的。
如下:
public class Test {
public static void main(String args[]) {
A a = new B();
System.out.println(a.i);
System.out.println(a.get());
}
public class B extends A {
public int i = -6;
public B() {
System.out.println("B().");
}
@Override
public int get() {
System.out.println("get B.");
return i;
}
}
public class A {
public int i = 12;
public A(){
System.out.println("A().");
}
public int get() {
System.out.println("get A.");
return i;
}
}
结果:
A().
B().
12
get B.
-6
子类定义与父类同名的成员变量,并没有覆盖父类的成员变量,而是两个成员变量共存。
对于方法就如上所示,得到结果为-6.