Java Shadowing
ใน java variable นั้นมีหลายประเภทเช่น local variable , instance variable , class variable เป็นต้น
แต่ละประเภทมี ขอบเขตการทำงาน(scope) ที่แตกต่างกัน
Java Shadowing เป็นการเขียน code ที่เขียน variable 2 ตัวที่มี ชื่อและ reference ถึงค่าตัวเดียวกัน ภายในขอบเขตการทำงาน(scope) ที่ซ้อนทับกัน
variable ที่ถูกเขียนก่อน (higher-level scope) จะถูกซ่อนไม่ทำงาน variable นั้นจะเป็น "shadowed"
variable ที่ถูกเขียนหลัง (lower-level scope) จะสวมทับและทำงานแทน variable ที่เป็น shadowed
A Local Variable And An Instance Variable Shadow
ภายใน method เมื่อ Local Variable มีชื่อเหมือนกับ Instance Variable
Instance Variable ดังกล่าวจะเป็น shadowed ของ Local Variable ภายใน method นั้น
กล่าวคือ Instance Variable ไม่ได้ถูก Override แต่มันถูกซ่อนเอาไว้เฉยๆไม่ทำงาน ส่วน Local Variable จะทำงานแทน
แต่คุณสามารถเรียก Instance Variable shadowed มาทำงานได้โดยอ้างอิงถึง Instance Variable โดยตรงผ่านคำสั่ง this
ตัวอย่าง code
A Class Variable shadows the Inherited Variable from Its Parent Classes
เมื่อ Instance Variable ที่สร้างในคลาสลูก มีชื่อเดียวกับที่ได้รับสืบทอดมาจาก คลาสแม่
Instance Variable ของคลาสลูกจะทำหน้าที่แทน Instance Variable ที่ได้รับสืบทอดมาจาก คลาสแม่
ตัวอย่าง code
แต่เราก็สามารถเรียก Instance Variable ของ คลาสแม่ มาทำงานได้เหมือนกัน โดยนำ Data Type ของคลาสแม่มาชี้ instance ของคลาสลูก โดย Instance Variable ของคลาสแม่ต้องระบุ Access Modifier เป็น public เท่านั้น
ตัวอย่าง code
ในตัวอย่างข้างต้นทั้ง cat และ animal ยังคง reference ถึง instance เดียวกัน
- cat มี Data type เป็นของ คลาสลูก Java Runtime จะใช้ Instance Variable ของคลาสลูก
- animal มี Data type เป็นของ คลาสแม่ Java Runtime จะใช้ Instance Variable ของคลาสแม่
ไม่มีความคิดเห็น:
แสดงความคิดเห็น