java - 继承中的静态变量

标签 java inheritance static

public class A 
{
    public static int i;
}
public class B extends A
{
    public static void main(String[] args)
    {
        System.out.println("print i=" + B.i); // referred to A.i
    }
}

我的问题是B.i如何引用A.i

如果静态变量i是继承的,为什么java还允许在B类中定义另一个变量i

最佳答案

A 的公共(public)或 protected 成员在 A 的所有子类中都是可见的。

If the static variable i is inherited why java allows to define another variable i in B class also?

很难推测原因。一个可能的原因是,这允许将成员添加到基类中,而不会破坏任何已经拥有同名成员的派生类。

请注意,如果您在B中定义另一个i,它将遮蔽A.i,从而使其变得困难访问后者。 I've seen people expecting this to behave polymorphically ,但事实并非如此(无论如何,您的情况略有不同,因为 A.istatic)。

关于java - 继承中的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15922260/

相关文章:

java - 自定义 ListView 的自定义适配器。空指针异常

python - Django admin - 编辑页面上的模型对象错误

java - 构造函数是否未绑定(bind)到类的实例?

c++ - 什么时候使用静态成员函数?

java - 使用 Action 数据模型值在 Struts2 JSP 中调用静态方法帮助程序类

c++ - 由 lambda 初始化的函数局部静态函数对象,线程安全与否?

java - 抽象类,Number,作为我在 Java 中的输入

java - JmsTemplate 与 IBM MQ 队列的 CachingConnectionFactory 连接恢复

Java - [Var Type] 无法解析

c++ - 如何从指向基类类型的指针调用派生类函数 (C++)