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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张向辉 于 2013-2-6 14:49 编辑

求指教:super关键字和this关键字的作用,我指的是怎么用,求说的明白点 我是真不懂!

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

3 个回复

倒序浏览
我说下区别吧,代码的话你可以随便找个有this 或 super 的代码看,根据我的写的区别进行分析 我就不写代码了
this关键字
刚开始理解就记住是(当前对象),多用的话就可以体会到具体的用途
操作的是哪个对象,哪个对象就是this。
当前类的引用。
例如在Person类中使用this,那么this就是Person类的引用。
局部变量和属性同名时,必须使用this来引用属性。不使用this前缀表示是局部变量。例如基本的Person类中的有参构造器
在类中使用this,所有部分出现的地方,其实前面都可以加上this。this就是那个整体!
super关键字
就是在子类中访问父类成员的通道
当引用父类属性和父类方法时,而子类中有同名属性或相同方法时,那么就一定要使用super调用语句!
子类构造器,无论如何都会去调用父类构造器(这里指在你没调用父类构造器,会默认调用,)这里可以自己写个父类和子类,子类无参构造不写东西,父类无参构造写个输出语句,来创建子类无参构造证明有没有调用父类、
还要了解下隐式和显示调用父类构造器
1.没有使用this调用语句,也没有使用super调用语句,那么就隐式调用父类的无参构造器。
2.如果使用了this调用语句,就不会隐式调用父类构造器,也不能再加super调用语句。
3.如果加了super调用语句,那么就是显式调用父类构造器,而不是隐式调用了。这时也不能再加this调用语句了。

评分

参与人数 1黑马币 +12 收起 理由
Rancho_Gump + 12

查看全部评分

回复 使用道具 举报
      朋友,楼上的说法我估计你看了也有点晕。你应该一步一步掌握super和this的用法,因为它们的应用场景不只一种,起初很容易混淆。最好是贴出你具体碰到的不懂的场景,回答者才能给你对应的准确回答,你也能一一掌握。
回复 使用道具 举报
它们都只能在构造函数的第一句出现,并且只能选一个。super()调用的是父类的构造函数,this()调用的是同一个类里重载的构造函数。如果你两个都没有写,编译器会在第一句给你加上super()。为什么两个只能有一个呢?因为你的this()调用的这个重载构造函数里面就有一个super()了,两个都有就有两个super()了。
另外这俩都是根据参数的类型和顺序来判断你调用的到底是哪个构造函数的。

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

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