Java关键字之this用法详解
1. 简介
this
是 Java 语言中的一个关键字,表示当前对象,一般情况下指代的是当前实例。在 Java 中大量使用 this
引用。 this
可以用来调用一个类的构造函数,也可以用来调用类成员变量或成员方法。
2. this
用法
2.1. 用于调用类的构造函数
在 Java 中, this
可以用于引用一个类的构造函数。这种用法的主要目的是在构造函数中调用另一个构造函数。
例如,我们定义一个 Student
类,有两个构造函数,一个包含一个参数,另一个包含两个参数。当在实例化这个类的时候,如果传入了两个参数,则调用两个参数的构造函数,否则调用一个参数的构造函数。
public class Student {
private String name;
public Student() {
this("default");
}
public Student(String name) {
this.name = name;
}
}
在上面的例子中,我们为 Student
类定义了两个构造函数,一个不带参数,另一个带有一个参数。当在实例化 Student
类时不传入参数,则会调用不带参数的构造函数,该构造函数中又会调用带有一个参数的构造函数来完成初始化操作。
2.2. 用于避免命名冲突
Java 中,如果在方法或构造函数中存在类成员变量和局部变量同名的情况下,使用 this
可以区分成员变量和局部变量。
例如,我们定义一个 Person
类,类中有一个成员变量 name
,同时在类的构造函数中又定义了一个局部变量 name
。
public class Person {
private String name;
public Person(String name) {
this.name = name; //成员变量
String name = "Tom"; //局部变量
System.out.println("局部变量 name 值为:" + name);
System.out.println("成员变量 name 值为:" + this.name);
}
}
在上面的例子中,通过 this.name
可以访问类的成员变量 name
,通过 name
可以访问局部变量 name
。在这里,通过 this
关键字区分了成员变量和局部变量的名字冲突。
3. 示例
3.1 示例一
我们定义一个 Person
类,并且在其中定义了两个方法,分别为 setName
和 showName
。
public class Person {
private String name;
public void setName(String name) {
this.name = name;
}
public void showName() {
System.out.println("我的名字是:" + this.name);
}
}
在上面的例子中,我们在 setName
方法中使用了 this
关键字来访问类的成员变量 name
,并且在 showName
方法中也使用了 this
关键字访问类的成员变量 name
,从而避免了命名冲突的问题。
public static void main(String[] args) {
Person p = new Person();
p.setName("小明");
p.showName(); //我的名字是:小明
}
当调用 showName
方法时,会输出 我的名字是:小明
。
3.2 示例二
我们再来定义一个 Family
类,并且在其中调用了 Person
类的构造函数,同时使用了 this
关键字来代表当前实例。
public class Family {
private Person father;
private Person mother;
public Family() {
this.father = new Person("父亲");
this.mother = new Person("母亲");
}
public void showFamily() {
System.out.println("我们的家庭成员有:");
this.father.showName();
this.mother.showName();
}
}
在上面的例子中,我们在 Family
类的构造函数中实例化了 father
和 mother
两个实例,并且在 showFamily
方法中使用了 this
关键字来访问 father
和 mother
实例。
public static void main(String[] args) {
Family f = new Family();
f.showFamily();
//我们的家庭成员有:
//我的名字是:父亲
//我的名字是:母亲
}
当调用 showFamily
方法时,会输出 我们的家庭成员有:我的名字是:父亲 我的名字是:母亲
。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java关键字之this用法详解 - Python技术站