首页 > 解决方案 > 在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
{}

标签: javainheritanceprotected

解决方案


是的,您可以使用它。

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

 + : accessible         blank : not accessible

如需更多参考,请在此处找到此问题的答案。在我看来类似。


推荐阅读