Java SE—面向对象 this关键字的作用

this关键字有三个用途:
a.this调用本类属性
b.this调用本类方法
c.this表示当前对象

this调用本类属性

class Person{
    private String name;
    private int age;
    public Person(String name,int age){
        name = name ;
        age = age ;
    }
    public String getPersonInfo(){
        return "姓名:" + name + ",年龄:"+age;
    }
}
public class Test{
    public static void main(String[] args) {
        Person per = new Person("张三",20);
        System.out.println(per.getPersonInfo());
    }
}

以上代码通过构造方法对属性进行赋值,但是你会发现当参数与属性名相同时,并不能正确赋值,此时我们需要加上this关键字给对象属性赋值

this.name = name;
this.age = age;//只要是在类中方法访问类中属性一定要加上this关键字

this调用本类方法
this调用本类方法分两种情况:
1、调用普通方法:this.方法名称(参数)

class Person{
    private String name;
    private int age;
    public Person(String name,int age){
        this.name = name ;
        this.age = age ;
        this.Print();//调用普通方法
    }
    public void Print(){
        System.out.println("这是一个普通方法");
    }
    public String getPersonInfo(){
        return "姓名:" + name + ",年龄:"+age;
    }
}
public class Test{
    public static void main(String[] args) {
        Person per = new Person("张三",20);
        System.out.println(per.getPersonInfo());
    }
}

2、调用构造方法:this(参数)
调用构造方法 this(参数)

class Person{
    private String name;
    private int age;

    public Person(){
        System.out.println("产生新的Person对象");
    }
    public Person(String name){
        System.out.println("产生新的Person对象");
        this.name = name ;
    }
    public Person(String name, int age){
        System.out.println("产生新的Person对象");
        this.name = name;
        this.age = age;
    }
    public String getPersonInfo(){
        return "姓名:" + name + ",年龄:"+age;
    }
}
public class Test{
    public static void main(String[] args) {
        Person per = new Person();
        Person per1 = new Person("张三");
        Person per2 = new Person("张三",23);
        System.out.println(per.getPersonInfo());
        System.out.println(per1.getPersonInfo());
        System.out.println(per2.getPersonInfo());
    }
}

对以上代码进行修改

public Person(){
        System.out.println("产生新的Person对象");
    }
    public Person(String name){
        this();
        this.name = name ;
    }
    public Person(String name, int age){
        this(name);
        this.name = name;
        this.age = age;
    }

this调用构造方法时必须注意:
    a.this调用构造方法的语句必须放在构造方法的首行
    b.使用this调用构造方法时,必须留有出口(不能成环)

this表示当前对象

class Person{
    public void Print(){
        System.out.println("普通方法"+this);
    }
}
public class Test{
    public static void main(String[] args) {
        Person per1 = new Person();
        System.out.println("主方法"+per1);
        per1.Print();
	
        Person per2 = new Person();
        System.out.println("主方法"+per2);
        per2.Print();
    }
}

只要对象调用了本类中的方法,this就表示当前执行的对象

猜你喜欢

转载自blog.csdn.net/ly52014/article/details/84497646