我有一个问题属于 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/