博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java--继承
阅读量:3913 次
发布时间:2019-05-23

本文共 757 字,大约阅读时间需要 2 分钟。

最近学习继承,从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单的访问,这里暂不考虑,于是我分析,子类不能继承父类私有的属性及方法,但是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建一个父,然后在父外部放上子类独有的属性,两者合起来形成一个子类的对象。所以所谓的继承使子类拥有父类所有的属性和方法其实可以这样理解,子确实拥有父类对象中所有的属性和方法,但是父类对象中的私有属性和方法,子类是无法访问到的,只是拥有,但不能使用。就像有些东西你可能拥有,但是你并不能使用。所以子类对象是绝对大于父类对象的,所谓的子类对象只能继承父类非私有的属性及方法的说法是错误的。可以继承,只是无法访问到而已。

这是我百度到的一个感觉挺靠谱的一个答案

Java 官方文档:

A subclass does not inherit the private members of its parent class. However, if the superclass has public or protected methods for accessing its private fields, these can also be used by the subclass.

翻译:

子类不继承其父类的私有成员。但是,如果超类具有用于访问其私有字段的公共或受保护方法,那么子类也可以使用这些方法。

final 修饰的方法可以继承,但不能被重写,可以被重载(方法名相同参数列表不同)。

 

结论:子类会隐式的包含一个父类对象,所以,父类的私有的东西并不会继承。

 

 

转载地址:http://jzprn.baihongyu.com/

你可能感兴趣的文章
Boltdb源码分析(一)-------page结构
查看>>
Boltdb源码分析(二)----node结构
查看>>
Go标准库plugin源码分析----动态库使用
查看>>
开源代码学习-nsq(v0.1.1版本)源码分析
查看>>
开源代码学习-nsq(v0.1.5版本)源码分析
查看>>
开源代码protoactor-go[e866f39]源码分析
查看>>
开源代码protoactor-go源码分析-async schedule
查看>>
开源代码TarsGo-v1.0.0源码分析之transport
查看>>
本人公众号技术文章目录-持续更新
查看>>
MySQL存储过程详解 mysql 存储过程
查看>>
iOS跳转到app下载页面和app评论页面
查看>>
Java编写简单客户/服务器程序
查看>>
random_shuffle函数
查看>>
Pareto
查看>>
N个正数选取若干个数之和最接近M
查看>>
278 First Bad Version
查看>>
43 Multiply Strings
查看>>
利用Storyboard实现复杂项目
查看>>
关于iPhone和iPad的图标的思考
查看>>
IOS UITableView中行的操作
查看>>