java - 变量是如何被覆盖的

标签 java variables static overriding

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.k9(objectMyClass 引用)。 SampleThree.k 会给你 90。每个类都有自己的一组变量。

(顺便说一句,IDE 会在此处警告您您正在通过实例而不是其类访问静态变量。)

关于java - 变量是如何被覆盖的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8983002/

相关文章:

c++ - 未定义的静态类变量

c - 引用局部变量

c# - 绑定(bind)到静态属性的一种方法失败

java - 如何更改单元格中的文本(ControlsFX 的 SpreadsheetView)?

java - 我如何模拟提供使用 JMockit 模拟的类的实例的静态方法?

java - “IN”和 'INNER JOIN' 关键字不适用于数据库

BASH:它是否支持条件变量,如 var ="test"?"1":"2"

C - 将字符串转换为变量名

java - groovy ActionListener 在一种情况下不起作用

javascript - 在 Javascript/React 中从另一个文件调用全局字符串