为什么以下代码编译成功并运行?

try*_*arn 3 java inheritance encapsulation

我有两个JAVA课程:

家长班:

public class Parent {
    private int age;

    public void setAge(int age) {           
        this.age = age;
    }

    public int getAge(){
        return this.age;
    }       
}
Run Code Online (Sandbox Code Playgroud)

儿童班:

public class Child extends Parent{      

    public static void main(String[] args){

        Parent p = new Parent();
        p.setAge(35);
        System.out.println("Parent   "+p.getAge());

        Child c = new Child();
        System.out.println("Child  " + c.getAge());         
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

  Parent   35
  Child     0
Run Code Online (Sandbox Code Playgroud)

私有成员不是在JAVA中继承的当getAge()在子类实例上调用方法时,为什么它成功运行甚至输出为0

Dav*_*INO 8

私有成员不是继承的,但访问它的公共方法是.

当您创建类型的对象时,Child如果不能直接使用,则还会创建超类的所有变量.

如果超类中有公共方法,则可以从子类访问它们.如果这些方法访问超类的私有变量值,您可以间接通过公共方法访问它们.

  • 不,超类的公共方法的主体可以访问私有变量以及超类的其他私有方法.实现细节隐藏在不知道如何收集数据的子类中. (2认同)