Java继承后受保护的成员会发生什么?

Shi*_*ngi 1 java inheritance protected access

就像在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
{}
Run Code Online (Sandbox Code Playgroud)

小智 5

是的,您可以使用它。

            ? Class ? Package ? Subclass ? Subclass ? World
            ?       ?         ?(same pkg)?(diff pkg)? 
?????????????????????????????????????????????????????????????
public      ?   +   ?    +    ?    +     ?     +    ?   +     
?????????????????????????????????????????????????????????????
protected   ?   +   ?    +    ?    +     ?     +    ?         
?????????????????????????????????????????????????????????????
no modifier ?   +   ?    +    ?    +     ?          ?    
?????????????????????????????????????????????????????????????
private     ?   +   ?         ?          ?          ?    

 + : accessible         blank : not accessible
Run Code Online (Sandbox Code Playgroud)

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