Java 多级继承 - 一级类中 protected 实例变量

标签 java class inheritance

我有一个问题属于 Java 中的多级继承。所有三个类都在同一个包中

我有 A 类:

public class A {
   protected int x;
}

public class B extends A {
   public void doSomething {
      // x is visible.agreed, as it is a direct subclass of A
   }  
}


public class C extends B {
   public void doSomething {
      // x is still visible, how come? I mean it is at the 2nd level 
     //  I am confused why?
   }  
}

喜欢有什么意义吗?或者这是我们必须默认采取的行为?

最佳答案

protected 修饰符标记的变量/方法对同一包中的所有类可见,并且仅对不同包中的子类可见。 以下是示例。

package a;
class A{
protected int x;
}
class B extends A{
//x can be accessed from this class
} 

class C extends B {
//x can be accessed from this class
}
class D{
//x can be accesed this class but you will have to create A's instance 
}

package B 
class One {
//cannot access x from this class
}
class Two extends A {
//can access x from this class
}

关于Java 多级继承 - 一级类中 protected 实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13241196/

相关文章:

java - 关于Java I/O类的问题

java - 在 Java 中平滑随机生成的地形以获得逼真的效果

java - 仅在满足特定条件时应用减少

c++ - 从 main 中的类访问数组

c++ - Qt类的私有(private)部分不安全

c++ - 关于封装和继承实践的问题

c++ - 两个基类中的相同成员?

java - TestNg 没有运行带有 'driver.find' 的 @test 注释,但仅适用于 'syso-printing

java - JButton 更改默认边框

php - 如何不允许在 PHP 中定义子类方法