que*_*orn 3 java oop inheritance
private修饰符指定只能在自己的类中访问该成员.但我能够使用从基类继承的公共方法来访问它.有人能解释一下为什么吗?这是否意味着Child类的对象包含一个名为b的成员?
这是代码:
package a;
public class Base {
private int b;
public int getB() {
return b;
}
public void exposeB() {
System.out.println(getB());
}
public Base(int b) {
this.b = b;
}
}
package b;
public class Child extends Base {
Child(int b) {
super(b);
}
public static void main(String args[]) {
Child b = new Child(2);
// Prints 2
System.out.println("Accessing private base variable" + b.getB());
}
}
Run Code Online (Sandbox Code Playgroud)
您没有直接访问超类中的私有变量.您正在实施Encapsulation的概念.您正在使用公共getter方法(在本例中为getB())来使您的私有数据被其他类加入.因此,你可以通过公共的getter访问私有变量b但你永远不斜面访问b直接从另一个/子其instace
| 归档时间: |
|
| 查看次数: |
776 次 |
| 最近记录: |