Java: this ตอนที่ 3 ใช้ this อ้างถึงตัวแปร

จากโค้ดใน ตอนที่ 2 ใช้ this เรียกใช้คอนสตรัคเตอร์ หากสังเกตให้ดี เราจะพบว่า ชื่อตัวแปรที่ประกาศเอาไว้ในคลาส และชื่อตัวแปรทำหน้าที่เป็นพารามิเตอร์ในเมธอด แตกต่างกัน

 

โค้ดในคลาส Book

 

ตัวแปรที่ส่วนของพารามิเตอร์ (parameter) จะมีเลข 1 ต่อท้ายตัวแปรทุกตัว

java-this-what-is-this-3-1

 

จะเป็นไปได้หรือไม่? ที่เราจะใช้ชื่อตัวแปรเดียวกัน

ทั้งตัวแปรที่เราประกาศเอาไว้ในคลาส

และตัวแปรที่เราใช้เป็นพารามิเตอร์ของเมธอด

 

ลองลบเลข 1 หลังตัวแปรทุกตัวออกไป

 

จะเห็นว่าตอนนี้ คลาส Book ของเรา มีชื่อตัวแปรเหมือนกันแล้ว ทั้งตั้วแปรประกาศเอาไว้ในคลาส และตัวแปรที่เป็นพารามิเตอร์ของเมธอด

java-this-what-is-this-3-2

 

โค้ดที่คลาส TestBook ก็ยังเหมือนเดิม

 

เมื่อสั่ง Run เราจะได้ผลลัพธ์ ดังนี้

java-this-what-is-this-3-3

 

จะเห็นว่า เราไม่สามารถกำหนดค่าให้กับตัวแปรได้ เพราะโปรแกรมแยกไม่ออกว่า

 

ตัวแปรใด คือตัวแปรที่ประกาศเอาไว้ในคลาส

และตัวแปร คือตัวแปรที่รับเข้ามาทางเมธอด

 

เราสามารถแก้ไขปัญหานี้ได้ โดยการใช้ this

เพื่อบอกให้โปรแกรมของเรารู้ว่า

ตัวแปรใดคือตัวแปรที่เราประกาศเอาไว้ในคลาส

 

ซึ่งสามารถเขียนโค้ดใหม่ โดยการเพิ่ม this ลงไปได้ดังนี้

 

เราเพิ่ม this ในการระบุว่า ตัวแปรใดคือตัวแปรในคลาส

java-this-what-is-this-3-4

 

ลองสั่ง Run อีกครั้ง คราวนี้เราสามารถกำหนดค่าให้กับตัวแปรได้แล้ว

java-this-what-is-this-3-5

 

สรุป

เมื่อเราใช้ชื่อตัวแปรเหมือนกัน ทั้งตัวแปรที่ประกาศเอาไว้ในคลาส และตัวแปรที่เป็นพารามิเตอร์ของเมธอด

เราจะใช้ this เพื่อระบุว่า ตัวแปรใดคือตัวแปรที่ประกาศเอาไว้ในคลาส

 

 

การใช้งาน this

เราสามารถใช้ this เพื่อทำงานต่าง ๆ ได้ดังนี้

1. การใช้ this เรียกใช้คอนสตรัคเตอร์

2. การใช้ this อ้างถึงตัวแปร

3. การใช้ this เรียกใช้เมธอด

4. การใช้ this เพื่อส่งออบเจ็กต์ผ่านทางเมธอด

5. การใช้ this เพื่อส่งออบเจ็กต์ผ่านทางคอนสตรัคเตอร์

6. การใช้ this เพื่อคืนค่าตำแหน่งออบเจ็กต์

Comments

comments

ธมนวรรณ มณีจันทร์

เป้าหมาย : "พัฒนาคุณภาพชีวิตผู้คน ผ่านการส่งมอบความรู้ ด้วยเทคโนโลยีที่ดีที่สุด" ... ประวัติ