在 java 中继承后受保护的成员会怎样?

what happens to protected members after inheritance in java?

在 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
{}

是的,您可以在子类中使用受保护的字段。

受保护的访问修饰符位于 public 和默认访问修饰符之间。它可以在包外访问,但只能通过子类访问。

请参阅此 link 以获得更清楚的信息。

https://www.tutorialride.com/core-java/inheritance-access-modifiers-in-java.htm

是的,您可以在子类中使用它。

是的,你可以使用它。

            │ Class │ Package │ Subclass │ Subclass │ World
            │       │         │(same pkg)│(diff pkg)│ 
────────────┼───────┼─────────┼──────────┼──────────┼────────
public      │   +   │    +    │    +     │     +    │   +     
────────────┼───────┼─────────┼──────────┼──────────┼────────
protected   │   +   │    +    │    +     │     +    │         
────────────┼───────┼─────────┼──────────┼──────────┼────────
no modifier │   +   │    +    │    +     │          │    
────────────┼───────┼─────────┼──────────┼──────────┼────────
private     │   +   │         │          │          │    

 + : accessible         blank : not accessible

如需更多参考,请查找此问题的答案here。我觉得很像。