Skip to main content

ตัวแปรอินสแตนซ์คืออะไร?

ตัวแปรอินสแตนซ์เป็นชิ้นส่วนของข้อมูลในการเขียนโปรแกรมเชิงวัตถุที่มีค่าที่ไม่ซ้ำกันของตัวเองสำหรับทุกวัตถุที่อยู่ตัวแปรอินสแตนซ์อาจเรียกว่าสมาชิกอินสแตนซ์ฟิลด์ที่ไม่คงที่และสมาชิกข้อมูลพวกเขาเป็นส่วนสำคัญของวัตถุส่วนใหญ่ถือชิ้นส่วนเฉพาะที่วัตถุใช้สำหรับการคำนวณ

ตัวอย่างเช่นหากมีวัตถุสองชิ้นคือ A และ B โดยที่วัตถุ A มีตัวแปรอินสแตนซ์ที่เรียกว่า blah และวัตถุ B ด้วยมีตัวแปรอินสแตนซ์ที่เรียกว่า blah ตัวแปร blah ทั้งสองเป็นเอนทิตีที่แตกต่างกันตัวแปรแต่ละตัวเชื่อมโยงกับวัตถุที่ห่อหุ้มมันชื่อเต็มของตัวแปร blah ที่เกี่ยวข้องกับวัตถุ A คือ A.blah ในขณะที่ชื่อเต็มของตัวแปร blah ที่เกี่ยวข้องกับวัตถุ B คือ b.blahแต่ละตัวแปรเหล่านี้สามารถมีค่าของตัวเองหากวัตถุ A และ B เป็นประเภทเดียวกันและวัตถุอื่นของประเภทนั้น C ถูกสร้างขึ้นและ Object C จะมีตัวแปรอินสแตนซ์ blah ซึ่งสามารถมีค่าที่ไม่ซ้ำกันของตัวเอง

ตัวแปรอินสแตนซ์มักจะสับสนตัวแปรคงที่ แต่ทั้งสองแตกต่างกันอย่างมีนัยสำคัญในทางตรงกันข้ามกับตัวแปรอินสแตนซ์ซึ่งทุกวัตถุประเภทใดประเภทหนึ่งมีตัวแปรคงที่ของตัวเองมีค่าเพียงค่าเดียวและค่านี้จะเหมือนกันสำหรับทุกวัตถุประเภทที่เหมาะสมตัวแปรคงที่มักเรียกว่าตัวแปรคลาสซึ่งไม่เหมือนกับตัวแปรอินสแตนซ์

ขึ้นอยู่กับคุณสมบัติการมองเห็นที่กำหนดให้กับพวกเขาตัวแปรอินสแตนซ์อาจมองเห็นได้เฉพาะภายในวัตถุเฉพาะกับวัตถุและคลาสย่อยหรือวัตถุซึ่งมันอาศัยอยู่เช่นเดียวกับวัตถุอื่น ๆการมองเห็นประเภทสุดท้ายที่เรียกว่าการมองเห็นสาธารณะมักจะถือว่าเป็นวิธีปฏิบัติที่ไม่ดีเช่นตัวแปรเพราะมันง่ายที่จะละเมิดหลักการห่อหุ้มในการเขียนโปรแกรมเชิงวัตถุแม้จะมีข้อห้ามนี้ แต่ก็มีหลายครั้งที่ตัวแปรอินสแตนซ์สาธารณะมีประโยชน์ตัวอย่างเช่นคลาสมาตรฐานจำนวนมากใน Java มีตัวแปรอินสแตนซ์สาธารณะซึ่งในบางครั้งช่วยให้สามารถปรับเปลี่ยนคุณสมบัติได้อย่างง่ายดาย

การมองเห็นของตัวแปรอินสแตนซ์ก็เข้ามาเล่นด้วยการสืบทอดหากคลาสหนึ่งสืบทอดมาจากชั้นเรียนอื่นสิ่งนี้ไม่ได้ให้ทั้งสองคลาสเข้าถึงตัวแปรอินสแตนซ์ของกันและกันตัวแปรอินสแตนซ์ส่วนตัวใน superclass และ subclass ยังคง จำกัด เฉพาะคลาสเหล่านั้นดังนั้นตัวแปรส่วนตัวในคลาสย่อยไม่สามารถมองเห็นได้โดย superclass และในทางกลับกันตัวแปรอินสแตนซ์เดียวที่ทั้ง superclass และ subclass สามารถดูได้คือตัวแปรป้องกันใน superclass