Java中子类继承父类的私有属性和方法
写在前面:
已经正式从事java开发一年了,在写一个demo的时候,突然发现继承这块的知识,以前都没有注意到这些,原来自己掌握的很浅薄。
通过书本看到子类拥有父类的所有属性和方法,于是写程序去验证,发现父类的私有属性和方法,子类是不能访问的,当然父类的某些私有属性可以通过父类的非私有方法去访问到,但是私有的方法不能在子类中直接访问。于是我认为,子类不能继承父类私有的属性和方法;
但是通过网上查阅,分析了内存后,我发现我是错误的,在一个子类被创建时,首先会在内存中创建一个父类对象,然后在父类对象的外部放上子类独有的属性,这两者结合起来形成了一个子类的对象。
所以在java继承中,子类拥有父类所有属性和方法可以这样理解:
子类对象确实拥有父类对象中的所有属性和方法,但是父类对象中的私有属性和方法,子类是无法访问到的,只是拥有,但不能使用。就像有些东西你肯恩拥有,但是你并不能使用;
所以子类对象时绝对大于父类对象的,所谓子类对象只能继承父类非私有的属性及方法的观点是错误的。可以继承,只是无法访问到而已。