继承类中static数据值

时间:2023-03-08 17:11:07
 class A{
static int num = 1;
public static void Display(){
System.out.println( num );
}
} class B extends A{
static int num = 2;
public static void Display(){
System.out.println( num );
}
} class C extends A{
static int num = 3;
} class D extends B{
static int num = 4;
} public class StaticTest {
public static void main(String[] args){
A.Display();
B.Display();
C.Display();
D.Display();
}
}

基类中,静态值和静态函数可以被覆盖。但如果要访问继承类中的继承类的值,需要重写方法,不然访问的就是基类的值。

运行结果不是1,2,3,4,而是1,2,1,2。

 class A{
static int num = ;
int num1 = ; public void Display(){
System.out.println( num + "," + num1 );
}
} class B extends A{ public B(){
num = ;
num1 = ;
} @Override
public void Display() {
// TODO Auto-generated method stub
System.out.println( num + "," + num1 );
}
} class C extends A{
public C(){
num = ;
num1 = ;
} } public class StaticTest {
public static void main(String[] args){ A a = new A();
B b = new B();
C c = new C(); a.Display();
b.Display();
c.Display(); }
}

运行结果

5,2

5,4

5,6

多态只是针对非静态成员变量的。静态变量不含this引用,因此不可能实现动态绑定。