คอนสตรัคเตอร์ (Constructor) บทที่ 10 คอนสตรัคเตอร์ (Constructor)
รู้จักกับ Constructor เป็นเมธอดประเภทหนึ่งที่มีชื่อเดียวกับชื่อคลาส เมื่อมีการสร้างออบเจ็กต์ด้วยคำสั่ง new เมธอดนี้จะถูกเรียกใช้งานโดยอัตโนมัติ เป็นเมธอดที่ไม่มีการคืนค่าและไม่ต้องระบุคีย์เวิร์ด void ถ้าในโปรแกรมไม่มี Constructor คอมไพเลอร์ภาษา Java จะใส่ Constructor แบบ default ให้กับโปรแกรมโดยอัตโนมัติ Default Constructor จะเป็น Constructor ที่ไม่มีคำสั่งใดๆ อยู่ภายใน
การสร้าง Constructor เพื่อกำหนดค่าเริ่มต้นให้กับแอตทริบิวต์หรือเมธอดต่าง ๆ ก่อนเริ่มใช้งาน Constructor สามารถรับพารามิเตอร์ได้เหมือนกับเมธอด มีรูปแบบการใช้งาน ดังนี้ [modifier] ClassName ([parameter]) { [statements] } โดยที่ ClassName เป็นชื่อคลาส objName เป็นชื่อออบเจ็กต์ modifier เป็นคีย์เวิร์ดที่กำหนดคุณสมบัติการเข้าถึงเมธอด parameter เป็นตัวแปรที่ใช้รับข้อมูลอาร์กิวเมนต์จากคลาสที่เรียกใช้งาน
การสร้างใช้งาน Constructor ในการเรียกใช้งาน Constructor ก็คือการประกาศออบเจ็กต์นั้นเอง เนื่องจาก Constructor จะมีการทำงานโดยอัตโนมัตเมื่อสร้างออบเจ็กต์ใหม่ ซึ่งมีรูปแบบการสร้างออบเจ็กต์ดังนี้ ClassName objName = new ClassName ([argument]); โดยที่ ClassName เป็นชื่อคลาส objName เป็นชื่อออบเจ็กต์ argument เป็นค่าอาร์กิวเมนต์ที่จะส่งไปให้กับ Constructor พารามิเตอร์ของ Constructor จะต้องมีจำนวนและชนิดข้อมูลสอดคล้องกับอาร์กิวเมนต์ที่ส่งมาตอนประกาศออบเจ็กต์ด้วยคำสั่ง new
โปรแกรมการใช้งาน Default Constructor
โปรแกรมการใช้งาน Constructor
Overloading Constructor ภาษา Java อนุญาตให้สร้าง Constructor ได้มากกว่า 1 ตัว เรียกว่า Overloading Constructor มีหลักการเดียวกับ Overloading Method จำนวนหรือชนิดข้อมูลของอาร์กิวเมนต์ที่ส่งไปในแต่ละ Constructor ต้องแตกต่างกัน คอมไพเลอร์จะเรียกใช้ Constructor ตัวใดให้ทำงานนั้น พิจารณาจากจำนวนหรือชนิดข้อมูลของอาร์กิวเมนต์ที่สอดคล้องกัน ทำให้กำหนดค่าเริ่มต้นให้กับออบเจ็กต์ได้หลายรูปแบบ
โปรแกรมการใช้งาน Overload Constructor
เรียกใช้ Constructor อื่นด้วยคีย์เวิร์ด this() this() เป็นคีย์เวิร์ดที่ใช้เรียก Constructor ที่อยู่ภายในคลาสเดียวกัน เป็นคำสั่งแรกสุดของ Constructor ที่เป็นตัวเรียกใช้งาน มีรูปแบบเหมือนกับการเรียกใช้ด้วยคำสั่ง new คือ สามารถส่งชนิดข้อมูลของอาร์กิวเมนต์ที่ต้องการได้ เพื่อให้สามารถเรียกใช้ Constructor ที่สอดคล้องกันได้
โปรแกรมการใช้คีย์เวิร์ด this()
เรียกใช้ Constructor ในคลาสแม่ด้วยคีย์เวิร์ด super() super() เป็นคีย์เวิร์ดสำหรับการเรียกใช้ Constructor ในคลาสแม่ เนื่องจาก Constructor จะไม่มีการสืบทอดมาให้คลาสลูก คลาสลูกที่ต้องการเรียกใช้ Constructor ในคลาสแม่ จึงใช้เมธอด super() เรียกใช้เป็นคำสั่งแรกสุดของ Constructor และมีรูปแบบเหมือนกับ การเรียกใช้ด้วยคำสั่ง new
โปรแกรมการใช้คีย์เวิร์ด super()