this关键字

【例】在项目中创建一个类文件,该类中定义了setName(),并 将方法的参数值赋予类中的成员变量。

this关键字

在上述代码中可以看到,成员变量与setName()方法中的形式参数的 名称相同,都为name,那么该如何在类中区分使用的是哪一个变量呢? 在Java语言中规定使用this关键字来代表本类对象的引用,this关键字被 隐式地用于引用对象的成员变量和方法,如在上述代码中,this.name指 的就是Book类中的name成员变量,而this.name=name语句中的第二个 name则指的是形参name。实质上setName()方法实现的功能就是将形参 name的值赋予成员变量name。

在这里读者明白了this可以调用成员变量和成员方法,但Java语言 中最常规的调用方式是使用“对象.成员变量”或“对象.成员方法”进行调 用(关于使用对象调用成员变量和方法的问题,将在后续章节中进行讲 述)。

既然this关键字和对象都可以调用成员变量和成员方法,那么this关 键字与对象之间具有怎样的关系呢?

事实上,this引用的就是本类的一个对象。在局部变量或方法参数 覆盖了成员变量时,如上面代码的情况,就要添加this关键字明确引用 的是类成员还是局部变量或方法参数。

如果省略this关键字直接写成name = name,那只是把参数name赋值 给参数变量本身而已,成员变量name的值没有改变,因为参数name在 方法的作用域中覆盖了成员变量name。

其实,this除了可以调用成员变量或成员方法之外,还可以作为方 法的返回值。

【例】在项目中创建一个类文件,在该类中定义Book类型的方法,并通过this关键字进行返回。

Book类型通过this关键字返回

在getBook()方法中,方法的返回值为Book类,所以方法体中使用 return this这种形式将Book类的对象进行返回。

发表评论