黑马程序员技术交流社区

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

作者: Renica    时间: 2013-6-7 10:32
标题: super和this
本帖最后由 Renica 于 2013-6-7 11:54 编辑

请问一下super和this有什么联系和区别呢?另外他们都是什么类型的,作用。
作者: HM张勇    时间: 2013-6-7 10:43
super是父类对象的引用,必须是出现在子类中,在子类中想要访问父类的构造函数时,必须通过super();方法访问,所以super是指向父类的。

this是谁调用当前对象就指向谁。

子类中出现非私有的同名成员变量时,子类要访问本类中的变量,用this子类要访问父类中的同名变量,用super。


作者: w270307032    时间: 2013-6-7 10:49
this:代表本类对象的引用。
super:代表父类的存储空间。
http://bbs.itheima.com/forum.php ... ;pre_pos=7&ext=
super和this关键字都可以用来覆盖java语言的默认作用域,使被屏蔽的方法或变量变为可见。
在以下场合会出现方法或变量被屏蔽的现象
(1) 场合一:在一个方法内,当局部变量和类成员变量同名,或者局部变量和父类的成员变量同名时,按照变量的作用域规则,只有局部变量在方法内可见。
(2)场合二:当子类的某个方法覆盖了父类的一个方法,在子类的范围内,父类的方法不可见。
(3)场合三:当子类中定义了和父类同名的成员变量时,在子类的范围内,父类的成员变量不可见。
this 和super是常用来指代子类对象和父类对象的关键字。JAVA系统默认,每个类都缺省地具有null,this和super三个域,所以在任意类中都可以不加说明而直接使用他们。其中null代表“空”,代表一个什么也没有的空值。
this表示的是当前对象本身,更准确地说,this代表了当前对象的一个引用。对象引用可以理解为对象的另一个名字,通过引用可以顺利地访问到对象,包括访问、修改对象的域、调用对象的方法。
super表示的是当前对象的直接父类对象,是对象的直接父类对象的引用。所谓直接父类是对象是相对于当前对象的其他“祖先”类而言的。

作者: Renica    时间: 2013-6-7 11:54
w270307032 发表于 2013-6-7 10:49
this:代表本类对象的引用。
super:代表父类的存储空间。
http://bbs.itheima.com/forum.php?mod=viewthread ...

比较详细,差不多明白了,谢谢了!




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