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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩金蕊 黑马帝   /  2012-1-9 15:47  /  4216 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 韩金蕊 于 2012-1-9 21:21 编辑

this关键字和super关键字有什么作用?

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

13 个回复

倒序浏览
成员函数中定义了和成员变量中相同的变量时,引用成员变量要用this.
构造函数中调用同一个类的其他构造函数时用this
子类中覆盖了于父类成员变量或成员函数时,在子类中调用父类的变量或函数要用super
子类的构造函数里调用父类的构造函数用super

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
this:指针显示或隐示的指向当前对象,可以用它来引用当前对象的成员(成员变量,成员函数)。如:this.成员名
super:指针指向父类,可以用它来引用父类的成员。在泛型中,super也有的使用。

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 代臣 于 2012-1-9 16:44 编辑

1.this关键字
如果一个类的方法中用到了this关键字,比如有语句this.number=number,
在创建了该类的一个对象之后,this关键字就代表该对象,前面的number代
表对象的成员变量number,后面的number代表传入方法的输入参数number。
还有this语句,也就是this(没有参数),this(有参数),它们用于构造函数之间
进行互相调用,且相互调用只能用this语句。
记住一般函数的调用不能用this语句。
注意:this语句只能定义在构造函数的第一行。
2.super关键字
子类要访问父类中的同名变量,用super,也就是super.父类变量;
如果子类没有与父类同名的变量,访问父类中的变量时也可以用:this.父类变量。
访问父类的构造函数用super(有参数或者无参数);
super语句也只能定义在构造函数的第一行。
super的使用和this的使用其实大同小异。
区别:
this代表对本类对象的引用。
super代表对父类对象的引用。

评分

参与人数 1技术分 +2 收起 理由
吴上储 + 2

查看全部评分

回复 使用道具 举报
this关键字
(1)是用在构造函数里的 当在构造器里要调用自己的其他构造器时,就用this this必须放在第一行 public class A { private String name; public A() { this("no name"); } public A(String name) { this.name = name; //other codes } }
super关键字
(1)用在构造器,和this的用法一样,super也可以用在构造器,this是调用自己的其他构造器,那么super当然就是调用父类的构造器了
回复 使用道具 举报

this.  后跟方法或属性 指示本类的方法或属性,this(有参数/无参数)  用于调用本类相应的构造函数
super. 后跟方法或属性(父类中指明的public protected),super(有参数/无参数) 用于调用父类相应的构造函数
回复 使用道具 举报
王涛 黑马帝 2012-1-9 20:17:23
7#
java中为了解决变量的命名冲突和不确定性问题引入了关键字this。
this:
1.返回调用当前方法的对象的引用
2.在构造方法中调用当前类中的其他构造方法
3.在方法参数名和成员变量名相同时,用于区分参数名和成员变量名
this代之当前类的实例,使用this可以调用当前类中的方法、属性和构造方法,而super代表父类的实例,在子类中,使用super可以调用其父类的方法、属性和构造方法。
super:
1.调用父类中的构造方法
2.调用父类中的方法和属性
回复 使用道具 举报
记住他们的英语单词,应该分清了
this  这, 这个 ----------------------------针对与自己类
super  表示"上","上方" ---------------针对与父类  (c# 中用base,感觉更形容)

然后在看看其他人说的,我感觉就知道怎么用了

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
is:指针显示或隐示的指向当前对象,可以用它来引用当前对象的成员(成员变量,成员函数)。如:this.成员名
super:指针指向父类,可以用它来引用父类的成员。在泛型中,super也有的使用。
回复 使用道具 举报
this()表示调用本类的(构造)方法,this.变量 表示调用本类的成员函数
super()表示调用父类的(构造)方法,super.变量 表示调用父类的成员函数

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
小白 黑马帝 2012-1-10 13:15:40
11#
super:
(1)引用父类的成员:super.变量 或 super.方法([参数列])
当然,这需要相应的访问权限
(2)在子类构造方法中调用父类的构造方法:
super([…]);//与this用法类似,应放在子类构造方法的第一行位置上
请注意:父类变量的初始化只能通过调用super([…])方法,由父类来完成,子类不可能“代劳”。只有父类变量的初始化完成之后,子类才开始其新增变量的初始化工作。
this:
this关键字表示的是“当前对象”,当出现在类的实例方法中,代表的是调用该方法的对象;当出现在类的构造方法中时,代表的是调用该构造方法创建的对象。在下列两种情况下,必须使用this:
回复 使用道具 举报
袁野 黑马帝 2012-1-10 13:28:20
12#
(1)this 表示在当前的类里面 ;:)
(2)super 表示在子类中使用父类的一些方法时才会被使用;
(3)当在子类中使用super 时 位置一定是 第一句话中;

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
张伟 黑马帝 2012-1-10 16:31:58
13#
上面的同学学的比较全了,我在补充一点,这两个都是java的关键字,关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。   Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。   一个Java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承。一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马