什么成为子类中受保护成员的可见性?
What becomes the visibility of protected members in a subclass?
我有一个 class A 和一个受保护的成员 :
package p1;
public class A{
protected int number;
}
现在我已将其子class编辑到另一个包中:
package p2;
public class B extends A{}
现在主要 class :
package p3;
public class Main{
public static void main(String[] args){
B b = new B();
System.out.println(b.number);
}
}
这执行得很好。受保护成员在 subclass 中的可见性是多少 - 他们会变成 public 吗?
然后我尝试了以下也没有显示任何错误:
System.out.println(new A().number);
看到这个之后我得出结论,我正在做一些非常愚蠢的事情或者误解了 protected
说明符的使用。我的学习方式:protected
成员只能在 subclasses 中访问,与包无关,并且它们保持相同的可用性。但是即使在父 class.
中,我也能够像访问 public
变量一样访问成员 number
的方式
请帮助我了解这里发生的事情。
在超类class中声明为受保护的变量、方法和构造函数只能由其他包中的子class或包中的任何class访问受保护成员的 class.
您可以阅读更多相关内容here
我有一个 class A 和一个受保护的成员 :
package p1;
public class A{
protected int number;
}
现在我已将其子class编辑到另一个包中:
package p2;
public class B extends A{}
现在主要 class :
package p3;
public class Main{
public static void main(String[] args){
B b = new B();
System.out.println(b.number);
}
}
这执行得很好。受保护成员在 subclass 中的可见性是多少 - 他们会变成 public 吗? 然后我尝试了以下也没有显示任何错误:
System.out.println(new A().number);
看到这个之后我得出结论,我正在做一些非常愚蠢的事情或者误解了 protected
说明符的使用。我的学习方式:protected
成员只能在 subclasses 中访问,与包无关,并且它们保持相同的可用性。但是即使在父 class.
public
变量一样访问成员 number
的方式
请帮助我了解这里发生的事情。
在超类class中声明为受保护的变量、方法和构造函数只能由其他包中的子class或包中的任何class访问受保护成员的 class.
您可以阅读更多相关内容here