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

Posted 一只鱼鱼鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的private成员变量的继承问题相关的知识,希望对你有一定的参考价值。

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

  传送门

 

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

分析内存的分配后发现:

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

 

  

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

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

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

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

  

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

 

以上是关于Java的private成员变量的继承问题的主要内容,如果未能解决你的问题,请参考以下文章

Java基础 成员变量的继承与覆盖

Java中类变量可以被继承吗

JAVa类中默认的成员变量的访问权问题

子类和继承

Java笔记(面向对象,类,this关键字,封装(private),匿名对象,成员变量和局部变量)

Java笔记(面向对象,类,this关键字,封装(private),匿名对象,成员变量和局部变量)