静态最终的继承 - >不可见

时间:2013-08-05 13:54:07

标签: java inheritance static final

嘿伙计我是一个全新的java新手,说实话,我不确定如何向你解释我的问题。

所以我有两个类,其中一个是另一个继承的。

现在我不允许更改超类,否则这会更容易。

问题是在我的子类中我想访问一个变量(让我们称之为变量1)

此变量的定义如下所示超类

static final String variable1 = (String)AccessController.doPrivileged(new PrivilegedAction()
 {
    public Object run() {
        return System.getProperty("variable1", "\n");
    }
 }
);

现在在我的子类中,我尝试以下方法:

this.finalOutputFormat = (replaceKeys(this.format) + variable1);

但它不起作用,因为eclipse一直告诉我变量1 “不可见”

这几乎是我唯一的错误。

你知道为什么变量1对我的子类不可见吗?显然,超类作为库导入,但在不同的包中导入。

我希望我对情况的描述不会太混乱,但现在我没有比这更多的信息。

感谢。

2 个答案:

答案 0 :(得分:4)

variable1上没有可见性关键字(公开,私有,受保护)。因此,只能从同一包中的类访问它。

如果不允许修改超类,则唯一的选择是将您的类放在与超类相同的包中。

答案 1 :(得分:0)

如果你想像这样使用它,可以在variable1之前放置一个public修饰符,或者将子类移动到与超类相同的包中