A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

父类有一个私有属性  子类可以通过get set 访问这个属性  但是私有属性是不能继承的  那么子类到底有没有这个属性?  我问了老师 老师说通过get set可以间接获取这个属性  所有子类也是拥有这个属性的。
你们觉得呢?

12 个回复

倒序浏览
子类可以通过方法获取这个属性没错,但是访问的毕竟是父类中的,我觉的并不属于本类中.主函数中也可以简介获取这个属性,要是像你那么说,岂不是主函数中也有了这个属性!
回复 使用道具 举报
小小鑫 发表于 2015-10-27 22:00
子类可以通过方法获取这个属性没错,但是访问的毕竟是父类中的,我觉的并不属于本类中.主函数中也可以简介获 ...

假如父类有个私有 name 和私有 age
新建子类对象赋给了 张三 23
那么输出 son.getName 这个不是son的名字吗
主函数间接获取也有一个前提是建立了一个对象
回复 使用道具 举报
但是子类在堆内存中的空间中确实是没有父类私有化的成员的,怎么解释!
回复 使用道具 举报
66666666666666
回复 使用道具 举报
不论子类对象给父类的私有化成员赋值还是获取值,都是用到了父类对象对外提供的set,get 方法,而这方法本来就是用来设置和获取私有化值的,之所以用public修饰就是要所有人都可以用,子类调用S,G方法也是理所应当,这不也恰恰说明了这些私有化成员没有在子类中么!!
回复 使用道具 举报
小小鑫 发表于 2015-10-27 22:16
不论子类对象给父类的私有化成员赋值还是获取值,都是用到了父类对象对外提供的set,get 方法,而这方法本来就 ...

子类的确不能直接访问 但是通过那两种方法就间接获取了   
假如那两个属性是public的  那么在堆内存中 子类对象为了初始化从父类继承的属性  会割出一块内存空间来让父类的构造方法初始化那个属性
同理  如果是private的  他通过set  get访问  获取时也会割出空间
回复 使用道具 举报
有点咬文爵字了,子类应该是不含有这个属性,但是可以获取这个属性。
回复 使用道具 举报
小小鑫 发表于 2015-10-27 22:12
但是子类在堆内存中的空间中确实是没有父类私有化的成员的,怎么解释!

子类对象割出来的空间就是给私有化成员用的啊  也在堆内存中
回复 使用道具 举报
307117758 发表于 2015-10-27 22:24
有点咬文爵字了,子类应该是不含有这个属性,但是可以获取这个属性。

他开始是不含有的   但是获取了 不就含有了吗
回复 使用道具 举报
北极的男娃 发表于 2015-10-27 22:26
他开始是不含有的   但是获取了 不就含有了吗

也不是他的,至少通过get方法返回了父类的私有变量,本质上不算他的
回复 使用道具 举报
307117758 发表于 2015-10-27 22:29
也不是他的,至少通过get方法返回了父类的私有变量,本质上不算他的

总得有地址值吧 如果内存中没有 他从哪给初始化 给赋值
回复 使用道具 举报
北极的男娃 发表于 2015-10-27 22:21
子类的确不能直接访问 但是通过那两种方法就间接获取了   
假如那两个属性是public的  那么在堆内存中 子 ...

我觉得咱再这么僵下去也不会有结果,不如咱俩都冷静冷静,放空自己,明天一早再来想这个问题,,如果还是认为自己是对的,明晚在好好讨论!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马