java入门(十七) | OOP(四)之this关键字
1.1 概念
Java中为解决变量的命名冲突和不确定性问题,引入关键字this代表其所在方法的当前对象的引用:
-
构造方法中指该构造器所创建的新对象;
-
方法中指调用该方法的对象;
-
在类本身的方法或构造器中引用该类的实例变量(全局变量)和方法。
this只能用在构造器或者方法中,用于获得调用当前的构造器方法的对象引用。可以和任何的对象引用一样来处理这个this对象。
1.2 形式
this.name = name;
1.3 练习1:当变量名相同时
- 当成员变量和局部变量同名时,this用于区分成员变量和局部变量,this能调用出来的一定是成员变量
如:this.name = name 中 左边是成员变量,右边是局部变量
package cn.qile.thisdemo;
//this的用法
public class Test1_this {
public static void main(String[] args) {
//创建Student对象测试
Student s = new Student();
Student s2 = new Student("rose");
System.out.println(s2.name);//rose
}
}
//创建Student类
class Student{
String name;
//提供构造方法
public Student() {
System.out.println("构造方法");
}
public Student(String name) {
//1、变量使用有就近原则
// name = name;//等号的左右两边使用的都是局部变量name,并没有给成员变量赋值
//2、这时我们想要把等号左边的name表示成员变量
//this代表的是本类,this能调用的是本类的成员,成员变量和成员方法
this.name=name;
}
}
总结:在调用变量时,记得变量的使用是有就近原则的,而this调用的肯定是本类的成员变量和成员方法
1.4 练习2:构造方法间的调用
package cn.qile.thisdemo;
//测试this调用构造方法
public class Test2_this {
public static void main(String[] args) {
//创建对象测试
Zoo z = new Zoo();
Zoo z2 = new Zoo("猴子");
}
}
//创建Zoo类
class Zoo{
//构造方法
public Zoo() {
//1、this在无参构造中 调用 含参构造
//3、this关键字在构造方法中使用时,必须是第一条语句
// this("大老虎");
System.out.println("无参构造");
}
public Zoo(String n) {
//2、this在含参构造中 调用 无参构造
//3、this关键字在构造方法中使用时,必须是第一条语句
this();
System.out.println("含参构造"+n);
}
}
总结:
- this可以在构造方法之间互相调用
- 在调用时,this()必须是第一条语句