this关键字的介绍
(一)this调用本类属性
· 通过this关键字可以明确的去访问一个类的成员变量,解决与局部变量名称冲突问题。
举例如下:
class Person2{
//方法
private String name;
//构造方法
//参数名(即局部变量)与属性名(即成员变量名)相同,
//为了加以区分,属性名前加 this,用于访问属性变量
public Person2(String name){
this.name = name;
}
public String getName(){
return name;
}
}
(二)this关键字调用本类方法
· this调用本类方法时的两种情况
1.调用普通方法:this.方法名称(参数)——可省略——最好不省略
2.调用构造方法:this(参数)
(1)this在本类中调用普通方法
this.方法名称(参数)——可省略——最好不省略
举例如下:
class Person2{
//方法
private String name;
//构造方法
//参数名(即局部变量)与属性名(即成员变量名)相同,
//为了加以区分,属性名前加 this,用于访问属性变量
public Person2(String name){
this.name = name;
}
public String getName(){
return name;
//此处调用普通方法,但是一定要在本类中
this.print();
}
//普通方法
public void print(){
System.out.prinbtln("##33##");
}
}
(2)this关键字在本类中调用构造方法
1. this调用构造方法的语句必须在构造方法首行,且只能出现一次;
2. 使用this调用构造方法时,请留有出口 ;
3. 只能在构造方法中使用this调用构造方法,不能在普通方法中调用;
· 形式:this.(参数)
举例如下:
class Person2{
//方法——private封装
private String name;
private int age;
//构造方法
public Person2(){
}
public Person2(String name){
this();//调用本类无参构造方法
this.name = name;
}
public Person2(String name,int age){
this(name);//调用本类有参构造方法
this.age = age;
}
//方法setter设置 和 getter获取
public void setName(String name){
this.name = name;//访问成员变量
}
public String getName(){
return name;
}
public void setAge(int age){
if(age < 0 || age >= 150){
System.out.println("输入错误!");
}
else{
this.age = age;//访问成员变量
}
}
public int getAge(){
return age;
}
//方法
public void intriduce(){
System.out.println("姓名:"+name+",年龄:"+age);
}
}
public class Test3{
public static void main(String[] args){
Person2 sg1 = new Person2("kelly",21);
Person2 sg2 = new Person2("张三");
sg1.intriduce();
sg2.intriduce();
}
}
运行结果如下:
(三)this关键字表示当前对象
· 只要对象调用了本类中的方法,这个this就表示当前执行的对象 。
class Person2{
public void print(){
System.out.println("输出:"+this);
}
}
public class Test3{
public static void main(String[] args){
Person2 sg1 = new Person2();
System.out.println(sg1);
sg1.print();//对象调用本类中的方法,则方法中的this就表示当前执行的对象sg1
System.out.println("————————————");
Person2 sg2 = new Person2();//对象调用本类中的方法,则方法中的this就表示当前执行的对象sg2
System.out.println(sg2);
sg2.print();
}
}
运行结果如下: