这几天在看Java程序设计案例,总是弄不清楚继承关系中的private:为什么子类中无法直接调用private变量进行操作,而是要通过父类public方法进行操作。
以前我对继承的理解是:子类与父类是分割开的,在子类实例化中,是完完全全的子类实例化,继承过程只是把父类的同名变量和方法复制给子类一份,避免子类代码的冗杂。
查了一圈博客园找到了相关资料,找到了一句话:
当一个子类被实例化的时候,默认会先调用父类的构造方法对父类进行初始化,即在内存中创建一个父类对象,然后再父类对象的外部放上子类独有的属性,两者合起来成为一个子类的对象。
不严谨的说,子类与父类相同的部分其实是属于父类的内存空间,在这上面的private成员,实际是属于父类的。子类要想调用这部分成员,必须经过父类的public方法进行操作。
这种理解,也能帮助理解super关键字的作用:调用父类的内存空间进行操作。