【发布时间】:2012-12-01 01:10:50
【问题描述】:
我正在阅读这本 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
那么,怎么了?
【问题讨论】:
-
您需要先创建实例,然后再尝试访问类的非静态成员。
标签: java inheritance protected