parent,son深刻理解this,super关键字
来源:互联网 发布:python程序化交易 编辑:程序博客网 时间:2024/05/16 07:27
核心点:
super关键字,表示调用的是父类对象。
this关键字,表示调用的是当前运行类对象。
那么如果在父类中,使用了关键字,this,此时的this指的是什么呢?
看下面的例子,再加深理解核心店的第二句话就ok了。
parent类:
package com.ghsy.thissuper;public class Parent {public void init(){System.out.println(this.getClass()); //获得当前运行类System.out.println(this.getClass().getSuperclass()); //获得当前运行类的父类System.out.println("1 parent init");this.demo();}public void demo(){System.out.println("2 parent demo");}public static void main(String[] args) {Parent parent = new Parent();parent.init();}}
son类:
package com.ghsy.thissuper;public class Son extends Parent{public void init(){ //JVM获得隐式传递 this获得super.init(); // Parent.init(son);System.out.println("3 son init");this.demo();}public void demo(){System.out.println("4 son demo");}public static void main(String[] args) {Son son = new Son();son.init();//Son.init(son)}}
分别在以上两个类的六个方法中打上六个断点,然后用eclipse进行debug,同时追踪this关键字值的变化。会有如下发现。
当调用super.init()时候,程序走到parent方法的init方法位置。显然这里的super关键的作用,调用父类对象的方法的时候使用。
接着往下走断点,发现打印的this.getclass的结果是son,同时在debug模式下,元素跟踪框中this关键字,也是son实例。
从此可以看出,即使在子类中调用了父类的方法,在父类中执行方法时,使用this关键字,此时的this不是指此时的父类。
而仍然当前的运行类son类的实例。既然this,仍然代表son。那么断点继续往下走,调用父类中的init方法中的this.demo方法
会出现什么结果呢?其实还是son.demo(),如果子类son类,没有此方法,则会调用父类的此方法。
所以最终还是一句话,this关键字,指的是当前运行类的实例。所有再设计父子类继承关系的时候,要有所注意的。
上述程序,从son类运行的结果1434;从parent类运行结果1,2.
0 0
- parent,son深刻理解this,super关键字
- Java中 this 和 super 关键字理解
- this和super关键字
- this 和 super关键字
- this与super关键字
- 关键字this super
- static this,super关键字
- JavaSE_13_Java关键字super&this
- super和this关键字
- 关键字this与super
- this和Super关键字
- this和super关键字
- this和super关键字
- this,super关键字08
- 关键字 this 和super
- super和this关键字
- this/super关键字
- This和Super关键字
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- 关于java的jar包不得不说两句
- 你在用C++编程时遇到的最多的几个汉字是啥?
- 如何修复U盘里的文件
- h264 图像、帧、片、NALU
- parent,son深刻理解this,super关键字
- Linux下查看应用程序库函数API接口的方法
- XMPP协议实现原理介绍
- Android分享Api使用(兼容模式)
- 配置Haproxy日志功能
- json2.js 简析(个人学习)
- runtime 机制
- static关键字以及字符串常量的理解
- ios 根据两个经纬度计算距离