在C ++中,受保护的成员在私有继承中变得私有。 所以我很困惑Java会发生什么。这里的访问说明符保持不变还是什么?喜欢
如果假设以下代码存在,那么shiva仍将在classB内保持受保护状态吗?我们可以再次在classC中使用它吗?
任何帮助将不胜感激。
package package1
class classA
{
protected shiva;
}
////////////////////////
import package1
package package2
class classB extends classA
{}
//////////////////////
import package2
class classC extends classB
{}
答案 0 :(得分:4)
是的,您可以使用它。
│ Class │ Package │ Subclass │ Subclass │ World
│ │ │(same pkg)│(diff pkg)│
────────────┼───────┼─────────┼──────────┼──────────┼────────
public │ + │ + │ + │ + │ +
────────────┼───────┼─────────┼──────────┼──────────┼────────
protected │ + │ + │ + │ + │
────────────┼───────┼─────────┼──────────┼──────────┼────────
no modifier │ + │ + │ + │ │
────────────┼───────┼─────────┼──────────┼──────────┼────────
private │ + │ │ │ │
+ : accessible blank : not accessible
有关更多参考,请找到此问题here的答案。在我看来类似。
答案 1 :(得分:1)
是的,您可以在子类中使用保护字段。
答案 2 :(得分:1)
受保护的访问修饰符位于public和默认访问修饰符之间。可以在包外部访问它,但只能通过子类访问。
请参阅此链接以更加清楚。
https://www.tutorialride.com/core-java/inheritance-access-modifiers-in-java.htm
是的,您可以在子类中使用它。