package com.mycompany.myproject.mypkg;
interface MyInterface {
public static final int k = 9;
}
class MyClass implements MyInterface {
// int k = 89;
}
public class SampleThree extends MyClass {
static int k = 90;
public static void main(String args[]) {
MyClass object = new SampleThree();
System.out.println(object.k);
}
}
为什么上面的程序打印的是“9”而不是“90”?
Java 中如何重写静态变量和成员变量?
最佳答案
因为字段不支持多态。 MyClass.k
是 9
(object
被 MyClass
引用)。 SampleThree.k
会给你 90
。每个类都有自己的一组变量。
(顺便说一句,IDE 会在此处警告您您正在通过实例而不是其类访问静态变量。)
关于java - 变量是如何被覆盖的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8983002/