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
    }
}
I think that protected member a1 is visible to SubClass. In addition, field a1 belongs to SuperClass. So why it's not visible?
 
    