this 关键字
this 关键字在程序中的三种常见用法。
(1)当成员变量和局部变量重名,可以用关键字this区分
通过this关键字可以明确地访问一个类的成员变量,解决与局部变量名称相同的问题。示例代码如下:
public class Cat {
String color;
public Cat (String color) {
this.color= color;
public int getColor() {
return this.color;
}
}
在上面的代码中,构造方法的参数被定义为color,它是一个局部变量,在类中还定义了一个成员变量,名称也是color。在构造方法中如如果使用color,则访问局部变量,但如果使用this. color,则访问成员变量。
(2)通过this关键字调用成员方法
具体示例代码如下:
public class Cat {
public void show() {
}
public void run() {
this. show();//使用this关键字调用show()方法。
//此处的this关键字可以省略不写
//即在上面的代码中,写成this.show()和show()效果是完全一样的。
}
}
(3)通过this关键字在构造函数中调用其他构造函数
构造方法在实例化对象时被JVM自动调用,在程序中不能像调用其他方法一样调用构造方法,但可以在一个构造方法中使用“this([参数1,参数2…])”的形式调用其他构造方法。
package study.example;
//定义两个重载的构造方法
public class Cat {
public Cat() {
System.out.print1n ("无参数的构造方法执行了...");
}
public Cat (String color) {
this();//调用无参数的构造方法
System. out. print1n ("有参数的构造方法执行了...");
}
}
下面创建测试类Example,调用有参数的构造方法,如下所示。
package study.example;
public class Examp1e {
public static void main(String[] args) {
Cat c= new Cat ("red");//实例化Cat对象
}
}
执行后的输出结果:
无参数的构造方法执行了…
有参数的构造方法执行了…
从运行结果中可以看出,先执行了无参数的构造方法,之后再执行有参数的构造方法。
注意,使用this关键字调用其他构造方法时只能出现在构造方法中,并且只能位于构造方法的第一行且只能出现一次。
将调用的构造函数放在后面执行,编译时就会提示错误。因为其他初始化要先执行,否则会破坏函数中的其他语句,覆盖我们需要传进去的参数,而且我们定义的函数是封装起来的。
另外,不能在两个构造方法中使用this相互调用,否则会出现编译错误。