私人会员可通过公共方式访问

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)

Per*_*ror 5

您没有直接访问超类中的私有变量.您正在实施Encapsulation的概念.您正在使用公共getter方法(在本例中为getB())来使您的私有数据被其他类加入.因此,你可以通过公共的getter访问私有变量b但你永远不斜面访问b直接从另一个/子其instace