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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© natalie 初级黑马   /  2013-8-7 09:28  /  1525 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-8-7 18:02 编辑

java中什么时候使用super,什么时候使用this。他俩的区别是什么?

评分

参与人数 1黑马币 +1 收起 理由
杨兴庭 + 1 赞一个!

查看全部评分

2 个回复

正序浏览
this是指对象本身,当你想要引用当前对象的某个方法或当前对象的某个成员时,你可以用this,
this只能在类中的非静态方法中使用,静态方法和静态代码块中绝不能出现this。

super则是代表其父类。子类中所有的构造函数默认都会访问父类中的空参数的构造函数。
为了完成这个必须的动作,就在子类的构造函数中加入了super()语句。

如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用
父类中哪个构造函数。同时子类构造函数中如果使用this调用了本类构造函数时,
那么super就没有了,因为super和this都只能定义第一行。所以只能有一个。
但是可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
this表示当前对象,也就是当前类对象;而super表示当前类所继承的父类。
比如:A继承了类B,也就是说B是A的父类。
如果A中有个show()方法;B中也有个show()方法;
那么在A 中用this.show()调用的就是A中定义的show()方法,
而super.show()调用的就是A的父类B中定义的show()方法。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马