【问题标题】:Protected members in Java [duplicate]Java中的受保护成员[重复]
【发布时间】:2020-04-17 11:17:36
【问题描述】:
public SuperClass{
    protected int a1;
}

// Consider that two classes are in different package.
public SubClass extends SuperClass{
    void m1(){
        SuperClass sp = new SuperClass();
        sp.a1 = 1; // Error: Subclass.a1 is not visible
    }
}

我认为受保护的成员 a1 对子类是可见的。此外,字段 a1 属于 SuperClass。那么为什么它不可见呢?

【问题讨论】:

  • 只有通过子类类型的实例在子类中可见。你不能superClassObject.protectedMember,它必须是子类中的subclassObject.superclassProtectedmember
  • 但是 a1 属于超类。那么为什么 a1 对 sp 对象不可见呢?
  • 这个问题的答案解释得最好:stackoverflow.com/questions/18573016/…

标签: java


【解决方案1】:

您正在实例化 SuperClass 的对象。然后尝试访问 SuperClass 的受保护成员。尽管它在子类中,但这基本上是一个试图访问受保护成员的实例。试试 this.a1。

【讨论】:

    猜你喜欢
    • 2012-10-09
    • 1970-01-01
    • 2018-09-29
    • 2011-07-30
    • 2016-01-07
    • 2021-02-16
    • 2014-05-13
    • 1970-01-01
    • 2012-05-26
    相关资源
    最近更新 更多