超级保护的java

时间:2012-06-16 07:40:21

标签: java protected super inheritance

关于java中继承的问题......

class Base {
    private int val = 10;
}

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

由于我们可以在子类中使用private关键字更改超类中的super字段,为什么我们应该使用protected来声明超类中的字段?

3 个答案:

答案 0 :(得分:4)

你做不到。除非Derive被声明为Base中的嵌套类(这种情况非常罕见),否则您给出的代码无法编译。

你应该收到这样的错误:

error: val has private access in Base

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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