这些天我阅读了java教程。并在“#34;控制对类成员的访问权限"我在修饰符的访问级别有一些麻烦" protected" .let me显示代码:
package PackagesOne;
public class Alpha {
protected String name;
}
package PackagesTwo;
import PackagesOne.Alpha;
public class AlphaSub extends Alpha {
public static void main(String[] args){
Alpha alpha = new Alpha();
String name = alpha.name;
}
}
并在PackagesOne中我声明修饰符的字符串名称" protected",在pacages中,AlpaSub是packagesOne中Alpha的子类。我的问题是在java教程中控制访问权限一个类的成员,它说其他包中的子类可以访问使用protected修改的类成员。但我不能这样做,当我javac AlphaSub时,它有错误。
答案 0 :(得分:1)
那是因为你正在创建一个Alpha对象尝试创建一个AlphaSub对象:
AlphaSub alphaSub = new AlphaSub();
String name = alphaSub.name;
标记变量protected,允许它在包外访问,但只能通过子类的对象而不是parentClass的对象
答案 1 :(得分:0)
您没有以正确的方式访问它。您需要创建一个Alpha Sub对象。
答案 2 :(得分:0)
受保护的成员在子类中仅作为子类的成员可用。所以在AlphaSub中它可以作为this.name访问。但不是alpha.name,因为名称不公开。