0

关于java继承的问题...

class Base {
    private int val = 10;
}

class Derive extends Base{
    public void setVal(int value) {
        super.val = value;
    }
}

既然我们可以在子private类中使用super关键字来改变超类中的字段,那么为什么要protected在超类中声明字段呢?

4

3 回答 3

4

你不能那样做。您给出的代码无法编译,除非Derive被声明为嵌套类Base(这是一种非常罕见的情况)。

您应该收到如下错误:

error: val has private access in Base
于 2012-06-16T07:41:32.617 回答
0

检查您的代码,即使您继承了该类,您也永远无法在该类之外访问私有。

于 2014-06-03T17:29:44.053 回答
0

super 是一个引用变量,用于调用父构造函数。

于 2014-06-03T17:23:20.787 回答