Java——this关键字

this是指向对象本身的一个指针

  • 调用本类属性。形参与成员名字重复,用this区分

当参数与属性名称相同时,则会出现混淆,则需要用户自己手动明确调用的是属性还是方法中的参数,若是属性,则需要加this.属性。

public class Person {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println("用this.age调用Person的成员变量:"+person.getAge(12));
        System.out.println("形参本身:"+person.getAge2(12));
    }

    private int age=10;

    public Person(){
        System.out.println("初始化后的年龄:"+age);
    }

    public int getAge(int age) {
        return this.age;
    }

    public int getAge2(int age){
        return age;
    }

}

运行结果: 

Java——this关键字_第1张图片

  • 调用本类方法/引用构造函数(此处举例涉及到super)
  • super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。
  • this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。

一个类中存在普通方法和构造方法,this调用本类方法时,对应的语法不同:

1)调用本类中的其他方法:this.方法()

2)调用本类其他构造方法:this()

public class Person {
    public static void main(String[] args) {
        Man man = new Man();
        man = new Man(15);
        man = new Man(20, "Andy");

    }
    private int age = 10;

    public Person() {
        System.out.println("Person中的构造方法。");
    }

    public Person(int age) {
        System.out.println("Person中的构造方法:" + age);
    }

}

class Man extends Person {
    public Man() {
        super();
        System.out.println("Man中的构造方法。");
    }

    public Man(int age) {
        super(age);
        System.out.println("Man中的构造方法[Man(int age)]:" + age);
    }

    public Man(int age, String name) {
        this(age);//调用子类具有相同参数的构造方法Man(int age)
        System.out.println("Man中的构造方法:" + name + "的年龄:" + age);
    }

}

 运行结果:

Java——this关键字_第2张图片

其中this(age)调用本类Man中的public Man(int age); 

 

this(age);//调用子类具有相同参数的构造方法Man(int age)

你可能感兴趣的:(java,jvm,开发语言)