黑马程序员技术交流社区

标题: this关键字的问题 [打印本页]

作者: 董将    时间: 2012-12-7 23:52
标题: this关键字的问题
在一个Java类中,其方法可以分为成员方法和构造方法两种。构造方法是一个与类同名的方法, 在Java类中必须存在一个构造方法。如果在代码中没有显示的体现构造方法的话,那么编译器在编译的时 候会自动添加一个没有形式参数的构造方法。这个构造方法跟普通的成员方法还是有很多不同的地方。如 构造方法的话一律是没有返回值的。而且也不用void关键字来说明这个构造方法没有返回值。而普通的方 法可以有返回值、也可以没有返回值,程序员可以根据自己的需要来定义。不过如果普通的方法没有返回 值的话,那么一定要在方法定义的时候采用void关键字来进行说明。其次构造方法的名字有严格的要求, 即必须与类的名字相同。也就是说,Java编译器发现有个方法与类的名字相同才把其当作构造方法来对待 。而对于普通方法的话,则要求不能够与类的名字相同,而且多个成员方法不能够采用相同的名字。在一 个类中可以存在多个构造方法,这些构造方法都采用相同的名字。只是形式参数不同。Java语言就凭用户 参数的参数来判断调用那个构造方法。
this关键字除了可以调用成员变量之外,还可以调用构造方 法。

this关键字除了可以引用变量或者成员方法之外,还有一个重大的作用就是返回类的饮用。如在 代码中,可以使用return this,来返回某个类的引用。此时这个this关键字就代表类的名称。如这个代 码在上面这个student类中,那么这个代码其代表的含义就是return student。可见,这个this关键字除 了可以引用变量或者成员方法之外,还可以做为类的返回值。这才是this关键字最引人注意的地方。

在使用this关键字的时候,需要注意一个细节问题。在笔者谈到的第一个案例中,利用this关键 字来引用成员变量。即this.name=name。这个语句是将局部变量或则形式参数赋值给成员变量。其实,此 时这个this关键字不加也可以起到类似的效果。即上面这个语句中,与name=name这个语句时相同的。即 Java编译器会自动将第一个name当作成员变量来对待。而将等号右边的name变量当作形式参数。虽然这么 书写代码,可以节省this这几个字符的输入。但是对于代码的阅读是不利的。为此,从代码的阅读性考虑 ,如果成员变量与形式参数或者局部变量相同的话,那么最好是使用this.成员变量(成员方法)的方式来 引用成员变量。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2