Dhr*_*hah 3 java inheritance class
我有一个问题属于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?
}
}
Run Code Online (Sandbox Code Playgroud)
它有什么意义吗?或者是默认情况下我们必须采取的行为?
用protected
修饰符标记的变量/方法对同一个pacakage中的所有类都是可见的,并且只对不同包中的子类可见.以下是示例案例.
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
}
Run Code Online (Sandbox Code Playgroud)
Java中的访问级别修饰符是:
public
- 所有代码都可见protected
- 对于同一个包中的所有代码和子类都可见,而不管包private
- 仅对同一类中的代码可见(包括嵌套类)例如,参见Java教程控制对类成员的访问或(有很多技术细节)Java语言规范的第6.6节.