修饰符“受保护”访问级别

时间:2014-12-12 13:06:25

标签: java

这些天我阅读了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时,它有错误。

3 个答案:

答案 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,因为名称不公开。