黑马程序员技术交流社区
标题: 关于this的一点疑问 [打印本页]
作者: yangxin540 时间: 2013-8-15 22:15
标题: 关于this的一点疑问
本帖最后由 yangxin540 于 2013-8-16 22:29 编辑
在看毕老师的视频时,毕老师说this语句不能用在一般函数中,但是他又说到了,成员之间的调用都是对象完成的,也就是this,如:- class Demo{
- private String name;
-
- public void print(){
- System.out.print(name);//这里实则是this.name,只是省略了this
- }
- }
复制代码 所以这两句话给我闹蒙了,求解释,到底this能不能用于一般函数中呢?
作者: 李政 时间: 2013-8-15 22:57
本帖最后由 李政 于 2013-8-15 23:15 编辑
毕老师说的这句话有点不记得了,对于this
只要记住它表示一个本类对象就行,
哪个本类对象调用了该对象中的方法,那么该方法中的this就表示调用这个方法的本类对象
类中的成员都是要被对象调用的,只不过一般不写this,省略了而已。但用于区别类变量与方法中的变量的时候写出来,如构造方法,看情况而定了
对于this,举个稍微复杂点的例子
在银行面试题中有讲到一个枚举 - package cn.itcast.bankqueue;
- public enum CustomerType {
- COMMON,EXPRESS,VIP;
- public String toString(){//复写toString()方法,方便直接调用枚举对象,然后打印相应的字符串
- String name = null;
- switch(this){
- case COMMON:
- name = "普通";
- break;
- case EXPRESS:
- name = "快速";
- break;
- case VIP:
- name = name();
- break;
- }
- return name;
- }
- }
复制代码
这段代码中,枚举中的哪个对象调用了toString()方法,那么方法里面的Swicth语句中的this就表示哪个对象
作者: 焦允 时间: 2013-8-15 23:24
this关键字除了在构造函数中调用其他构造函数外,还可以当做一个引用使用。其用于方法中,哪个对象调用该方法,this就引用哪个对象.例如:
方法中局部变量和成员变量重名,我们想调用成员变量时就可以使用this.变量名形式访问成员变量。
其实在一个类中调用本类中的成员的时候都有this,只是大多时候省略了,this就是一个引用,其指向调用所在类成员的对象。
作者: 昝文萌 时间: 2013-8-16 09:43
我又看了一遍毕老师的视频,毕老师把this的用法分为this语句和this关键字,构造函数之间的相互调用不能像一般函数之间的调用一样,一般函数之间的调用可以直接写函数名,而构造函数之间的调用必须用this语句,而this关键字可以用在一般函数中,this语句只能用于构造函数之间的调用。- class Person
- {
- private Sting name;
- private int age;
- Person(Sting nane)
- {
- this.name=name;
- }
- Person(Sting name,int age)
- {
- this(name);//这个是this语句的用法,只能用于构造函数之间的调用,不能用于一般函数之间的调用。
- this.age=age;//这个是this关键字的用法,可以用于一般函数。
- }
- }
复制代码
作者: 七宝 时间: 2013-8-16 09:52
当然可以,你想啊,set和get方法不都用到了this,this代表当前对象的引用
作者: SammaZhang 时间: 2013-8-16 11:50
在以下情况需要用到this:
1.通过this调用另一个构造函数,用法是this(参数列表),只能引用一个构造函数且必须位于首行,这个仅仅在类的构造函数中,别的地方不能这么用。
2.函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错。
3.在函数中,需要引用该函所属类的当前对象时候,直接用this。
作者: 探花 时间: 2014-3-28 23:14
this关键字除了在构造函数中调用其他构造函数以外,还可以当做一个引用来使用。
其用于方法中,哪个对象调用该方法,this就引用哪个对象。例如:
方法中局部变量和成员变量重名,我们想调用成员变量时就可以使用this.变量名形式访问成员变量。
在方法中要将调用该方法的对象作为参数传递给另一个方法时,可以将this作为实参传给该方法。
在内部类中访问外部类的成员时,需要使用外部类名.this.成员名形式访问。
(1)代表当前对象的引用。使用的时候,谁调用方法,this就代表谁。 (2)什么时候使用this呢? A:当局部变量和成员变量重名的时候,可以用this进行区分。 B:this调用成员方法 C:构造函数中使用this **this() 必须放在第一行。
- public class Person {
- private String name;
- private int age;
- public Person() {
- this("zhangs",23);
- }
- public Person(String name, int age) {
- super();
- this.name = name;
- this.age = age;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- @Override
- public String toString() {
- return "Person [name=" + name + ", age=" + age + "]";
- }
-
- public void method() {
- this.print();
- }
-
- public void print() {
- System.out.println(this关键字");
- }
- }
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |