有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的受保护成员

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属于超类。那为什么它不可见呢


共 (1) 个答案

  1. # 1 楼答案

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