首页 > 学院 > 开发设计 > 正文

this关键字

2019-11-11 06:59:56
字体:
来源:转载
供稿:网友

this关键字

一、了解this用处

this:在程序里面,使用this可以访问本类中的属性,方法,表示出当前对象

1.使用this访问属性

 

但是以上的程序里面有一点不是很好,在构造方法上

 

构造方法的主要目的是为了类之中的name,age两个属性初始化,但是构造方法里面参数的名字并不清楚。既然目的是为属性传递数据,那么最好将参数名称和属性名称保持一致

改造如下:

 

如果按照此类的方式修改,发现name和age两个属性的并没有内容。因为在构造方法里面操作的name和age和类之中的属性无关,只与构造方法的参数有关(以{}为查找范围);

所有的程序都以{}作为边界,所有的取用都是以就近取用,若按照此道理来讲,以上所操作的name和age实际上只是构造方法里面的两个参数而已。所以现在要想明确的指定出访问的是属性则在属性访问前加上一个this,使用this.属性的方式进行访问

最终改造如下:

 

结论一:以后所以编写的程序,都必须使用this访问本类属性。

2.this调用构造方法

如果要强调方法,在一个类之中应该有两类方法:普通方法和构造方法。如果调用本类中的普通方法,则建议在方法前加“this”,使用“this.方法()”调用,但是在使用this的过程中还可以利用其实现构造方法的互调用

构造方法是在使用关键字new实例化类对象的时候使用到的,但是利用this()可以实现构造方法间的互调用操作

例子:

 

此时的构造方法已经成功实现了互调操作,但是在使用this调用构造方法的时也有一些限制:

1)使用this调用构造方法时必须放在构造方法的首行

2)在使用this()进行构造方法互相调用时,请至少保证留下一个出口。

即:不使用this调用其他构造;

3.this表示当前对象(开头)

所谓的当前对象严格来讲指的就是当前调用本类方法的对象;

例子:

 

输出结果:

 

4.引用传递分析(重点)

范例一:

 

 

Fun(p);就相当于Person temp=Person;

这段程序使用了引用传递,在方法中只需要接收Demo类对象,就表示两个栈内存指向同一块堆内存空间,所做的修改一定可以保留下来;

范例二:

 

本题目解释只有一句话:字符串的内容一旦声明则不可改变;

 

本程序属于一个数值关系,传递到方法里面的数据就相当于一个数据的拷贝,至于方法里面如何修改与之前无关;方法的参数在执行完之后消失

对于String数据类型由于其本身的特性所决定的操作模式(不可改变的模式)那么如果觉得堆栈关系过于难以理解,就按照基本类型的方式理解;

范例三:

 

此范例和第一范例是一样的,String是一个引用数据类型,需要有堆栈关系

总结:this关键字

1)使用“this.属性”表示本类属性,而且在日后所有编写代码中,都要求写上“this”

2)使用“this.方法()”可以调用本类普通方法;

3)使用“this()”表示调用本类构造方法,而且此代码要求放在构造方法的首行,并且多个构造之间不允许循环调用(留有出口);

4)This表示当前对象:当前正在调用本类中方法的对象;


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表