一个关于成员变量的多态问题 Java

class Fu{
    int i = 10;
}
class Zi extends Fu{
    int i = 20;
}
class Test{
    public static void main(String[] args)
    {
        Fu test = new Zi();
        System.out.println(test.i);
    }
}

思维惯性,上面的代码应该输出的是20,但是这段代码的输出其实是10,在这里先给出结论:

成员变量不具备多态性,通过引用变量来访问其包含的实例变量,系统总是试图访问它编译时类型所定义的成员变量,而不是运行时类型所定义的成员变量

猜你喜欢

转载自blog.csdn.net/gaoenyang760525/article/details/105899000