如何通过get,set方法访问到父类的私有属性
2019-04-30 23:39:20来源:博客园 阅读 ()
刚学习继承的时候,总是会有这样的疑问。
子类继承父类时,会继承所有的非私有的属性和方法。那么在用set方法修改父类的私有属性时,怎么没有报空指针异常呢?
后来仔细想过这个问题,既然没有报空指针,那么在内存里这个属性一定是存在的。那么问题又来了,既然都在内存为什么又不能访问呢。百度了一下,原来在实例化子类的过程中,有一些有趣的东西。都知道在实例化子类之前,会先调用父类的构造方法。此时,就可以把子类的内存看做两部分,一部分是父类,一部分是子类其本身。super和this就分别指向这两部分,this的权限相比于super要大一些,super只能访问属于父类的那块区域,而this除了能访问子类本身的那部分区域外,还能访问super中那些没有被private修饰的东西。这儿还有个有趣的东西,就是重写,在父类变量引用子类实例的时候,为什么不能调用子类特有的方法的原因,通过上面的原因就很显而易见了,那么为什么此时调父类的方法却访问的是子类重写后的方法呢。原来,尽管变量是一个父类的对象,但实例出来的对象却是子类的,在访问方法时,会先扫描this指向的区域,如果在其中找到了就停止扫描,然后调用扫描到的方法,如果没有找到那么就会扫描super执行的区域,如果找到就停止,然后执行,如果没有找到就抛出异常。
才疏学浅,若有不对,请留言指正。
原文链接:https://www.cnblogs.com/xiaoshanji/p/10791686.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Flink 如何分流数据 2020-06-11
- 通过与C++程序对比,彻底搞清楚JAVA的对象拷贝 2020-06-11
- 老板让你抗住千万级流量,如何做架构设计? 2020-06-11
- 如何干掉 if else 策略+工厂 2020-06-11
- 类的继承,方法重新中修饰符如何定义 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash