我有以下代码
package com.kathy.accessmodifiers2;
public class base extends Object{
protected int a = 10;
}
package com.kathy.accessmodifiers;
import com.kathy.accessmodifiers2.*;
class derived extends base {
public void D() {
System.out.println("D");
base b = new base();
System.out.println(super.a); //line 1
//System.out.println(b.a); //line 2
//Only this class can access the proctected member.
System.out.println(this.a);
System.out.println(a);
}
}
class derived2 extends derived {
public void D2() {
System.out.println(a);
}
}
public class Protected {
public static void main(String str[]) {
new derived2().D();
}
}
在第 1 行中,我正在使用super.a
,输出为 10。在第 2 行的情况下,代码无法编译,因为我试图从基类(不同的包)访问类protected
的成员(不同的包)。super
为什么在可访问的情况super
下a
?