我正在阅读这本 Java SCJP 书,我遇到了这个:
受保护的和默认的访问控制级别几乎相同,但有一个关键区别。只有当访问该成员的类属于同一个包时,才能访问默认成员,而即使子类位于不同的包中,子类也可以(通过继承)访问受保护的成员。
所以我决定测试一下protected
。
我在一个包中有一个超类
package scjp;
public class Token {
protected int age = 6; //This is the protected class-level variable.
public Token(String name){
this.name = name;
}
public Token(String name, int age){
this.name = name;
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
我在另一个包中有一个子类;
package pack;
import scjp.Token;
public class son extends Token{
public static void main(String[] args) {
System.out.println(Token.age);
}
}
如您所见,我正在尝试访问age
超类中受保护的类级整数变量。
但我得到这个错误:
age has protected access in scjp.Token
at pack.son.main(son.java:11)
Java Result: 1
那么,怎么了?