Java關鍵字之this
阿新 • • 發佈:2020-12-29
Java關鍵字 —— this
定義
this是自身的一個物件,代表物件本身,可以理解為:指向物件本身的一個指標。
用法
this的用法在Java中大概可以分為3種
普通的直接引用
this相當於指向當前物件的本身
形參與成員變數重名,使用this來區分
例項:
punlic class Student{
private Strins name;
public String getName(){
return name;
}
public void setName (String name){
this.name = name;
}
}
上述程式碼中,用this修飾的name就是成員變數name,沒有this修飾的就是形參name。
上述程式碼中的getName方法並沒有形參,沒有與成員變數重名,所以直接return name返回的就是成員變數。
引用建構函式
使用方法:this(引數):呼叫本類中另一種形式的建構函式(應該為建構函式中的第一條語句)。
例項:
package com.lrving;
public class TestDemo {
public static void main(String[] args) {
Person p = new Person();
System.out.println(p.getName());
System.out.println(p.getAge());
}
}
class Person{
private String name;
private int age;
// 帶參的建構函式
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(String name) {
this (name, 18); // 呼叫另一個構造方法Person(String, int)
}
public Person() {
this("Unnamed"); // 呼叫另一個構造方法Person(String)
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
}
當執行
public class TestDemo {
public static void main(String[] args) {
Person p = new Person();
System.out.println(p.getName());
System.out.println(p.getAge());
}
}
執行得到的結果是
原因是Person p = new Person();呼叫的是
public Person() {
this("Unnamed"); // 呼叫另一個構造方法Person(String)
}
此時this(“Unnamed”);呼叫
public Person(String name) {
this(name, 18); // 呼叫另一個構造方法Person(String, int)
}
所以輸出的結果就是
Unnamed
18
當執行
public class TestDemo {
public static void main(String[] args) {
Person p = new Person("Lrving");
System.out.println(p.getName());
System.out.println(p.getAge());
}
}
執行得到的結果是
Lrving
18
原因是Person p = new Person(“Lrving”);呼叫的是
public Person(String name) {
this(name, 18); // 呼叫另一個構造方法Person(String, int)
}
此時 this(name, 18);呼叫
public Person(String name, int age) {
this.name = name;
this.age = age;
}
所以輸出的結果就是
Lrving
18
當執行
public class TestDemo {
public static void main(String[] args) {
Person p = new Person("Lrving",18);
System.out.println(p.getName());
System.out.println(p.getAge());
}
}
執行得到的結果就是
Lrving
18
直接呼叫的就是
public Person(String name, int age) {
this.name = name;
this.age = age;
}
注意事項
代表所在類的物件引用,方法被那個物件呼叫,this就代表那個物件。