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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王小刚 中级黑马   /  2012-3-17 11:44  /  2371 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

this.  与 this() ,   super.   与 super() 到底有什么区别,即什么时候用 this.  什么时候用this(),   什么时候用super.  什么时候用super()    求高手指点下,我是真搞不清...

9 个回复

倒序浏览
this:当前对象引用
  1、代表使用该方法的对象的引用
  2、必须指出当前使用方法的对象是谁时使用this
  3、可以处理方法中使用成员变量和参数重命名的情况
回复 使用道具 举报
this.  调用本类的成员参数
this() 调用本类的构造方法
super.  调用父类的成员参数
super() 调用父类的构造方法
到底有什么区别,区别如上所示
即什么时候用 this.  什么时候用this(),   什么时候用super.  什么时候用super()  

拿自己的东西用this
拿父亲的东西用super
回复 使用道具 举报
父类有100块,子类也有100块。子类想用自己的钱就用this,要用父类的钱就用super。
回复 使用道具 举报
本帖最后由 彭盼 于 2012-3-17 16:30 编辑

this()  用于调用本类相应的构造函数,哪个对象调用函数中包含的this,那么this就指相应的那个对象。
super() 用于调用本类所继承的父类相应的构造函数
this.  后跟方法或属性 用这个表示函数或变量引用本类的方法或属性
super. 相应的是引用父类的方法或属性,若用super去执行改变变量的操作,而父类也存在此变量,则父类中此变量也会被改变
回复 使用道具 举报
this:在引用自身的成员变量的时候用比如说:this.成员变量;
this():这个是在自身构造方法中,进行重载的时候用的。可以调用已写的构造方法;
super:在子类中调用父类的成员变量可以使用这个。
super();在子类构造方法中,必须调用父类的构造方法,如果调用父类的空构造,可以使用super()[必须在第一行使用],如果调用父类的别的构造方法,那么使用super(参数列表【应该是父类的成员变量】);
回复 使用道具 举报
是不是就是 this()和supet()只能用于调用子父类的构造函数?
回复 使用道具 举报
this. 是父类调用子类的成员 this() 是父类调用子类的构造函数;
super. 是子类调用父类的成员, super()是子类调用父类的构造函数;
回复 使用道具 举报
李创 中级黑马 2012-3-17 13:37:19
9#
this
第一、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。
第三、在函数中,需要引用该函所属类的当前对象时候,直接用this
super的用法:
第一、在子类构造方法中要调用父类的构造方法,用“super(参数列表)”的方式调用,参数不是必须的。同时还要注意的一点是:“super(参数列表)”这条语句只能用在子类构造方法体中的第一行。
第二、当子类方法中的局部变量或者子类的成员变量与父类成员变量同名时,也就是子类局部变量覆盖父类成员变量时,用“super.成员变量名”来引用父类成员变量。当然,如果父类的成员变量没有被覆盖,也可以用“super.成员变量名”来引用父类成员变量,不过这是不必要的。
第三、当子类的成员方法覆盖了父类的成员方法时,也就是子类和父类有完全相同的方法定义(但方法体可以不同),此时,用“super.方法名(参数列表)”的方式访问父类的方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马