this關(guān)鍵字
記住一點(diǎn):每一個(gè)方法都會(huì)默認(rèn)傳入一個(gè)變量叫this,它永遠(yuǎn)指向調(diào)用它的【當(dāng)前實(shí)例】。
(1) this訪問屬性和方法
寫段代碼:
//構(gòu)造方法和其他方法一樣可以重載,可以有參數(shù),名字必須和類名一 樣,不能有一點(diǎn)區(qū)別public Dog(String name){System.out.println("驗(yàn)證構(gòu)造方法被調(diào)用的時(shí)機(jī):【"+ name + "】被創(chuàng)建! ");this.name = name;}public void eat(){// this也可以在成員方法中使用System.out.printf("【%s】再吃骨頭。 ",this.name); }public static void main(String[] args) {//直接new對象看看new的時(shí)候是不是調(diào)用了構(gòu)造方法,事實(shí)證明 是的new Dog("哈士奇").eat();}
一個(gè)方法只有在調(diào)用的時(shí)候,才能明確方法中的【this】具體指向哪個(gè)實(shí)例對象。
我們可以使用this訪問當(dāng)前對象的方法和屬性。
(2) this訪問構(gòu)造器
還可以訪問當(dāng)前類的構(gòu)造器:
//構(gòu)造方法和其他方法一樣可以重載,可以有參數(shù),名字必須和類名一樣,不能有一點(diǎn)區(qū)別public Dog(String name){System.out.println("驗(yàn)證構(gòu)造方法被調(diào)用的時(shí)機(jī):【"+ name + "】被創(chuàng)建! ");this.name = name;}public Dog(){this("default");}
如果我們使用無參構(gòu)造會(huì)傳入一個(gè)默認(rèn)值,這就是典型的案例
注意:this當(dāng)做構(gòu)造器只能放在第一行