Loading

Java的private成员变量的继承问题

java板块关于private变量到底会不会被继承,一直都有争议。

  传送门

 

另一种说法是非继承关系,但是不能够解释为什么。

分析内存的分配后发现:

  当一个子类被实例化的时候,默认会先调用父类的构造方法对父类进行初始化,即在内存中创建一个父类对象,然后再父类对象的外部放上子类独有的属性,两者合起来成为一个子类的对象。

 

  

  虽然说子类对象内存空间包含这个private变量,但是子类不能自己编写函数对这个private变量进行直接修改,访问。只能通过继承下来的public函数对private变量进行修改,访问。

  关于这些争议,最佳的解决办法是明白如何定义继承。。。

  对于持非继承观点的人来说,继承下载的变量或方法必须得能够直接使用,即直接修改或访问。这是符合传统的继承概念。

  对于持继承观点的人来说,因为子类内存中有private变量,即子类拥有private变量,它就应该是继承的。

  

  对于这两种想法,都有一定道理,但是书上定义偏向于第一种,因此个人接受第一种的思想。

 

posted @ 2019-02-22 11:16  FishLight  阅读(10833)  评论(1编辑  收藏  举报