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

时间:2019-07-19 05:58:18

标签: java inheritance access protected

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

3 个答案:

答案 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

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