目錄
- this的作用
- this參考
- 為什么有this
- 什么是this參考
- this參考的特性:
- this
- 通過this呼叫屬性
- 通過this呼叫類中的方法
- 通過this呼叫自身的構造方法
this的作用
this的作用1——當成參考使用,其型別變化,(看出在那個型別中)指向物件變化(看通過那個物件呼叫方法)
this的作用2——用在構造方法中,呼叫其他構造方法
this的型別取決于出現在那個型別中,
在沒有歧義的情況下,使用“大名/小名”都可以,但在有歧義的情況下,必須使用this
this參考
為什么有this
當我們創建了一個類,類的實體化后,給類的成員方法和屬性進行設定的時候,如果形參名與成員變數名相同,那么到底是給誰賦值呢?會不會產生歧義呢?
這個時候,我們就需要用到this
什么是this參考
java編譯器給每個“成員方法“增加了一個隱藏的參考型別引數,讓該參考引數指向當前物件(成員方法運行時呼叫該成員方法的物件),在成員方法中中所有成員變數的操作,都是通過該參考去訪問,只不過所有的操作對用戶是透明的,即用戶不需要來傳遞,編譯器自動完成,
public class Date{
public int year;
public int mon;
public int day;
public void setDay(int year, int month, int day){
this.year = year;
this.month = month;
this.day = day;
}
public void printDate(){
System.out.println(this.year + "/" + this.month + "/" + this.day);
}
}
public static void main(String[] args) {
Date d = new Date();
d.setDay(2020,9,15);
d.printDate();
}
注意:
當使用無歧義的時候,也可以不加this
this參考是呼叫成員方法的物件
this參考的特性:
- this參考的型別:對應型別別參考,即那個物件呼叫就是那個物件的參考型別
- this參考只能在"成員方法中使用"
- this參考具有final屬性,在一個成員方法中,不能再去參考其他的物件
- this參考是成員方法第一個隱藏的引數,編譯器會自動傳遞,在成員方法執行時,編譯器會負責將
呼叫成員方法物件的參考傳遞給該成員方法,this參考負責來接收 - 在成員函式中,所有成員變數的訪問,都會被編譯器修改成通過this來訪問
this
通過this呼叫屬性
例如:
public MyDate(int year,int mon,int day) {
this.year = Date.year;
this.mon = Date.mon;
this.day = Date.day;
}
通過this呼叫類中的方法
在類中,可以通過this呼叫類中的方法,可以嵌套呼叫;
例如:
public class MyDate {
private int year;
private int mon;
private int day;
public MyDate(int year, int mon, int day) {
this.year = year;
this.mon = mon;
this.day = day;
}
public void method1(){
System.out.println("今天是:")
}
public void method2(){
this.method1;
System.out.println(this.year + "/" + this.month + "/" + this.day);
}
}
通過this呼叫自身的構造方法
public class MyDate {
private int year;
private int mon;
private int day;
public MyDate() {
this.year = year;
this.mon = mon;
this.day = day;
}
public MyDate(int year, int mon, int day) {
this.year = year;
this.mon = mon;
this.day = day;
}
public void method(){
System.out.println(this.year + "/" + this.month + "/" + this.day);
}
}
public class Main{
public static void main(String[] args) {
MyDate n = new MyDate();//呼叫不帶引數的建構式
n.method();
}
}
注意:
場景:需要在一個構造方法當中,呼叫當前類的另外一個構造方法的時候,通過this()的形式呼叫,
必須放在第一行,且只能呼叫一個
例如:
public MyDate() {
this.year = year;
this.mon = mon;
this.day = day;
}
也可以寫成:
public MyDate() {
this(yeer,mon,day);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/253077.html
標籤:java
上一篇:牛客編程題(六)
