คลาสและวัตถุ (4) (Class & Object) บทที่ 2 คลาสและวัตถุ (4) (Class & Object)
รู้จักกับ Constructor w7_000.rar ข้อ 34, 35 รู้จักกับ 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
หลักการห่อหุ้ม (Encapsulation) บทที่ 3 หลักการห่อหุ้ม (Encapsulation)
ระดับการใช้งานของ Access Modifier public สามารถเข้าใช้งานได้จากทุกคลาส private สามารถเข้าใช้งานข้อมูลภายในคลาสเดียวกันเท่านั้น protected สามารถเข้าใช้งานข้อมูลภายในคลาสเดียวกันและ คลาสที่สืบทอดกัน package สามารถเข้าใช้งานข้อมูลภายในคลาสเดียวกันและ คลาสอื่นที่อยู่ภายในแพ็คเกจเดียวกัน
การกำหนดระดับของ access modifier กรณีที่ข้อมูลทำหน้าที่เป็นตัวแปรสาธารณะอนุญาตให้คลาสใด ๆ เรียกใช้ได้โดยตรง ให้กำหนดเป็น public กรณีที่ข้อมูลมีค่าเป็นส่วนตัวไม่อนุญาตให้คลาสอื่นมาเปลี่ยนแปลงค่าได้ ให้กำหนดเป็น private กรณีที่ข้อมูลมีความสัมพันธ์ในลักษณะที่มีการสืบทอดจากคลาสแม่สู่คลาสลูก ให้กำหนดเป็น protected กรณีที่เป็นข้อมูลทั่วไป การไม่กำหนดระดับของ access modifier จะถือว่ามีระดับการใช้งานเป็น package ซึ่งมีการป้องกันระดับการเข้าใช้งาน ดังนี้ ข้อมูลสามารถถูกเรียกใช้จากคลาสที่อยู่ภายในแพ็คเกจเดียวกัน ถ้าต้องการใช้ข้อมูลจากคลาสต่างแพ็คเกจกัน จะต้องกำหนดเป็นแบบ public ใช้ในกรณีที่ไม่ต้องการให้ตัวแปรเป็นสาธาณะ และไม่ต้องการให้เป็นตัวแปรที่มีค่าส่วนตัว สามารถจำกัดสิทธิการใช้งานภายในแพ็คเกจเดียวกัน
ระดับการใช้งานแบบ public เป็นการกำหนดแอตทริบิวต์หรือเมธอดที่ต้องการ ให้สามารถเรียกใช้ได้จากคลาสใด ๆ
ระดับการใช้งานแบบ private เป็นการกำหนดแอตทริบิวต์หรือเมธอดที่ต้องการ ให้สามารถเรียกใช้ได้จากคลาสเดียวกันเท่านั้น ไม่อนุญาตให้คลาสอื่นเรียกใช้งาน
ระดับการใช้งานแบบ protected เป็นการกำหนดแอตทริบิวต์หรือเมธอดที่อนุญาตให้คลาสที่มีความสัมพันธ์จากคลาสแม่สู่คลาสลูกใช้งานเท่านั้น ไม่อนุญาตให้คลาสอื่นเรียกใช้ได้
ระดับการใช้งานแบบ package เป็นการกำหนดแอตทริบิวต์หรือเมธอดที่ต้องการใช้งานในคลาสเดียวกันหรือคลาสที่อยู่ในแพ็คเกจเดียวกัน ไม่สามารถเรียกใช้จากคลาสที่อยู่ต่างแพ็คเกจกันได้ คลาสที่อยู่ในแพ็คเกจเดียวกันหมายถึงคลาสที่อยู่ในโฟลเดอร์เดียวกัน
แพ็คแกจและการใช้งาน แพ็คแกจเป็นการจัดหมวดหมู่ของคลาสเพื่อให้เป็นระเบียบและง่ายต่อการเรียกใช้งาน เปรียบได้กับโฟลเดอร์ที่มีไว้รวบรวมคลาสให้อยู่ด้วยกัน โดยใช้ การตั้งชื่อแบบโครงสร้างต้นไม้ ซึ่งมีเครื่องหมาย ”.” คั่น ตัวอย่าง เช่น Tax_Calculation.tax หมายถึง คลาส tax อยู่ในแพ็คเกจ Tax_Calculation
ตัวอย่างโปรแกรมที่มีการใช้แพ็คแกจ (1) การอ้างถึงคลาสที่อยู่ในแพ็คแกจเดียวกัน
ตัวอย่างโปรแกรมที่มีการใช้แพ็คแกจ (2) การอ้างถึงคลาสจากแพ็คแกจอื่น