请参阅以下计划和评论:
请告诉我另一个类如何在没有继承的情况下访问受保护的成员?我已经编译并运行了这个程序。
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行?
答案 0 :(得分:4)
这是正确的行为。 protected
允许同一个包中的所有类看到该成员,而不仅仅是子类。请参阅http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html。
答案 1 :(得分:0)
记住以这种方式保护 - 默认+继承。 Protected
访问修饰符允许访问其他包中的相同包+子类。