java - 在java中继承后 protected 成员会发生什么?

标签 java inheritance protected

在 C++ 中, protected 成员在私有(private)继承中变得私有(private)。 所以我很困惑 Java 中会发生什么。这里的访问说明符保持不变还是什么?喜欢

如果假设存在以下代码,那么现在 shiva 仍将在 classB 中受到保护?我们可以在 classC 中再次使用它吗?

我们将不胜感激。

package package1
class classA
{
protected shiva;
}

////////////////////////
import package1
package package2
class classB extends classA
{}

//////////////////////
import package2
class classC extends classB
{}

最佳答案

是的,你可以使用它。

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

 + : accessible         blank : not accessible

有关更多引用,请找到此问题的答案 here .在我看来很相似。

关于java - 在java中继承后 protected 成员会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57106323/

相关文章:

java - Eclipse RCP中定制的ConsoleAppender给出了循环依赖

java - 即使在关闭 android studio 后,Gradle 仍将 java 作为进程保留

c++ - 什么标准对临时继承人进行静态转换?

java - Android:将 Foursquare 集成到应用程序中

java - iPhone 拒绝 UDP 数据包的一些可能原因是什么?

c# - Container<ImplementerOfIInterface> 不是 Container<IInterface>。为什么不?

scala - 我们真的在 Scala 中拥有 'extend' 特征吗?

java - 实现继承的正确方法

java - 重写 protected 方法

java - 为什么在不相关的类中可以访问 protected 方法?