可以在同一个包内访问Java Protected Variables而不继承如何?

时间:2013-09-01 08:55:30

标签: java inheritance

请参阅以下计划和评论:

请告诉我另一个类如何在没有继承的情况下访问受保护的成员?我已经编译并运行了这个程序。

class Sample3
{
   final protected String Var1 = "Sample 3 Final Varaible";
   final private String Var2 = "Sample 3 Final Varaible";
}//class Sample3

class Sample4
{
 public static void main(String args[])
 {
    Sample3 s3=new Sample3();
    //System.out.println(s3.Var2);// Line 12 : this is not accessible as the Private member is being accessed 
    System.out.println(s3.Var1);//Line 13 : this access the protected member but i have not used inheritance between 2 classes Sample3 and Sample4
 }//end of main
}/class Sample4

Var1是Class受保护的成员,Var2是类的私有成员。

我在Sample4中创建了Sample3的Object。第12行显然是一个错误但它如何编译第13行?

2 个答案:

答案 0 :(得分:4)

这是正确的行为。 protected允许同一个包中的所有类看到该成员,而不仅仅是子类。请参阅http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

答案 1 :(得分:0)

记住以这种方式保护 - 默认+继承。 Protected访问修饰符允许访问其他包中的相同包+子类。