[Java] 7.3. this

this,目前物件的代名詞。

 

image/svg+xml7.3. ⽬前物件的代名詞 - this this ,明確的指定⼈員物件的屬性 class Person { String id , name , gender ; int age ; Person ( String id , String name , String gender , int age ){ id = id ; name = name ; gender = gender ; age = age ; } public void Show(){ System.out.println( " ⾝份證號: " + id ); System.out.println( " 姓名: " + name ); System.out.println( " 性別: " + gender ); System.out.println( " 年齡: " + age ); } } class MainClass{ public static void main( String [] args){ Person t; t = new Person ( " K123456789 " , " 王⼩明 " , " " , 20 ); t . Show (); } } 執⾏結果 編號: null 姓名: null 性別: null 年齡: 0 class Person { String id , name , gender ; int age ; Person ( String id , String name , String gender , int age ){ this . id = id ; this . name = name ; this . gender = gender ; this . age = age ; } public void Show(){ System.out.println( " ⾝份證號: " + id ); System.out.println( " 姓名: " + name ); System.out.println( " 性別: " + gender ); System.out.println( " 年齡: " + age ); } } class MainClass{ public static void main( String [] args){ Person t; t = new Person ( " K123456789 " , " 王⼩明 " , " " , 20 ); t . Show (); } } 執⾏結果 ⾝份證號: K123456789 姓名:王⼩明 性別:男 年齡: 20 J7_3_1 – Person.java 1. 這是⼈員類別( Person )。 J7_3_2 – Person.java 1. 這是⼈員類別( Person )。 2. 建構式的參數名稱與屬性名稱相同?! 3. 那建構式中的 id 是屬性的 id 還是參數的 id ?建構式中的 name 是屬性的 name 還是參數 name ?那 gender 呢? age 呢? 4. 這是⾃我介紹⽅法( Show() )其會顯⽰⼈員的⾝ 份證號屬性( id )、姓名屬性( name )、性別屬性 gender )與年齡屬性( age )中的值。 J7_3_1 – MainClass.java 5. 雖然透過建構式傳入⾝份證號、姓名、性別與年齡資訊。 6. 透過建構式傳入的⼈員編號、姓名、性別與年齡資訊,卻無法 成功代入⾄屬性中,以透過⾃我介紹⽅法- Show() 顯⽰出來。這即是 建構式的參數因與屬性同名,因此 遮蓋 了即有屬性,造成無法將⼈ 員編號、姓名、性別與年齡資訊的值代入⾄屬性中,這個問題有解嗎? J7_3_2 – MainClass.java 3. 但這時可透過   this 指出⽬前的物件,在透過句點( . )的⽅式存取⽬ 前物件的 id name gender age ,即⼈員類別( Person )的 id name gender age 屬性。如此就避免屬性被同名的參數遮蓋住的問題。 2. 直接使⽤的 id name gender age 作為建構式傳入的參數,雖然這會 遮蓋 同名的 id name gender age 屬性。 4. 這是⾃我介紹⽅法( Show() ),等會會再次呼叫此⽅法, 以顯⽰⼈員的⾝份證號屬性( id )、姓名屬性( name )、性別 屬性( gender )與年齡屬性( age )的資訊。 5. 透過建構式傳入⾝份證號、姓名、性別與年齡資訊。此時因建構式中使⽤ this 區分參數與屬性,因此可以正確經由建構式將⼈員相關資料代入屬性中。 6. 最後呼叫⾃我介紹⽅法,證實了⼈員的 屬性皆成功透過建構式,代入屬性值。 在⽅法中,若要傳遞或回傳⽬前的物件,可透過 this 的⽅法取得⽬前的物 件,⽽後進⾏傳遞或回傳的作業。 建構式的參數 遮蓋 了⼈員的屬性, 要如何才能存取到⼈員的屬性呢? 1 1 1 1

留言