黑马程序员技术交流社区

标题: super与this [打印本页]

作者: natalie    时间: 2013-8-7 09:28
标题: super与this
本帖最后由 杨兴庭 于 2013-8-7 18:02 编辑

java中什么时候使用super,什么时候使用this。他俩的区别是什么?
作者: breaveheart    时间: 2013-8-7 09:32
this表示当前对象,也就是当前类对象;而super表示当前类所继承的父类。
比如:A继承了类B,也就是说B是A的父类。
如果A中有个show()方法;B中也有个show()方法;
那么在A 中用this.show()调用的就是A中定义的show()方法,
而super.show()调用的就是A的父类B中定义的show()方法。
作者: 张智文    时间: 2013-8-7 09:36
this是指对象本身,当你想要引用当前对象的某个方法或当前对象的某个成员时,你可以用this,
this只能在类中的非静态方法中使用,静态方法和静态代码块中绝不能出现this。

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

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





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2