相关疑难解决方法(0)

规定在Java中继承静态变量的规则是什么?

我有一节课,Super:

public class Super {
    public static String foo = "foo";
}
Run Code Online (Sandbox Code Playgroud)

我还有另一个类,Sub它扩展了Super:

public class Sub extends Super {
    static {
        foo = "bar";
    }

    public static void main (String[] args) {
        System.out.println(Super.foo);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它打印出来bar.
我的第三个(也是最后一个)课程是Testing:

public class Testing {
    public static void main (String[] args) {
        System.out.println(Super.foo);
        System.out.println(Sub.foo);
        System.out.println(Super.foo);
    }
}
Run Code Online (Sandbox Code Playgroud)

这打印:

foo
foo
foo
Run Code Online (Sandbox Code Playgroud)

我不明白为什么内容foo会有所不同,具体取决于您从哪个班级访问它.谁能解释一下?

java inheritance

45
推荐指数
1
解决办法
4万
查看次数

标签 统计

inheritance ×1

java ×1