ตัวสร้างโอเวอร์โหลดใน Java: คำอธิบาย ประโยชน์ & ตัวอย่าง
เผยแพร่แล้ว: 2021-07-22สารบัญ
พื้นฐานของ Java
Java ซึ่งมีคุณลักษณะที่โดดเด่นและไดนามิก ได้กลายเป็นหนึ่งในตัวเลือกที่เป็นที่ต้องการมากที่สุดสำหรับนักพัฒนาซอฟต์แวร์สำหรับการเขียนโปรแกรมเว็บแอปพลิเคชันขนาดใหญ่ เป็นภาษาที่ใช้งานง่ายพร้อมคุณสมบัติพิเศษมากมาย เข้ากันได้กับระบบปฏิบัติการทั้งหมดคือ API ที่หลากหลายทำให้เป็นที่นิยมทั่วโลก ภาษาให้การสนับสนุนชุมชนที่แข็งแกร่งและบริการเอกสารที่ยอดเยี่ยม Java มีชุดเครื่องมือการพัฒนาที่มั่นคง
ตัวสร้างใน Java
ตัวสร้างใน Java ใช้เพื่อเริ่มต้นสถานะของวัตถุ เช่นเดียวกับเมธอด คอนสตรัคเตอร์ยังมีกลุ่มของคำสั่งหรือคำสั่งที่จะถูกดำเนินการในขณะที่สร้างอ็อบเจกต์
ทำไมเราต้องมีตัวสร้างใน Java?
ให้เราพิจารณากล่อง หากถือว่ากล่องเป็นคลาส อาจมีตัวแปรหลายตัว เช่น ความกว้าง ความยาว และความสูง เมื่อมีการสร้างอ็อบเจ็กต์ คลาส box จะไม่มีค่าที่กำหนดไว้สำหรับมิติของมัน ในขณะที่สร้างวัตถุใหม่ ตัวสร้างกำหนดค่าให้กับตัวแปรของคลาส การกำหนดค่าสามารถทำได้โดยใช้ตัวสร้าง Java เริ่มต้นหรือโดยชัดแจ้งโดยพารามิเตอร์ที่ส่งผ่านโดยโปรแกรมเมอร์
เมื่อใดที่ Constructor ถูกเรียก?
ทุกครั้งที่สร้างอ็อบเจกต์โดยใช้คีย์เวิร์ด new() จะมีการเรียกใช้ตัวสร้างอย่างน้อยหนึ่งตัว ตัวสร้างนี้จัดเตรียมค่าเริ่มต้นให้กับสมาชิกข้อมูลของคลาส โดยทั่วไป คอนสตรัคเตอร์จะถูกเรียกเมื่อมีการสร้างอ็อบเจ็กต์หรืออินสแตนซ์ใหม่
ตัวสร้างโอเวอร์โหลดใน Java
กระบวนการกำหนดคอนสตรัคเตอร์หลายตัวในคลาสเดียวกันเรียกว่าคอนสตรัคเตอร์โอเวอร์โหลด อย่างไรก็ตาม คอนสตรัคเตอร์แต่ละตัวควรมีลายเซ็นหรือพารามิเตอร์อินพุตต่างกัน กล่าวอีกนัยหนึ่ง คอนสตรัคเตอร์โอเวอร์โหลดใน Java เป็นเทคนิคที่ช่วยให้คลาสเดียวมีคอนสตรัคเตอร์มากกว่าหนึ่งตัวที่แตกต่างกันไปตามรายการอาร์กิวเมนต์ที่ส่งผ่าน คอนสตรัคเตอร์ที่โอเวอร์โหลดแต่ละตัวถูกใช้เพื่อทำงานที่แตกต่างกันในคลาส
คอมไพเลอร์ Java ระบุคอนสตรัคเตอร์ที่โอเวอร์โหลดโดยพิจารณาจากรายการพารามิเตอร์ ประเภทพารามิเตอร์ และจำนวนพารามิเตอร์อินพุต ดังนั้น คอนสตรัคเตอร์ที่โอเวอร์โหลดควรมีลายเซ็นที่แตกต่างกัน ลายเซ็นของคอนสตรัคเตอร์ประกอบด้วยชื่อและประเภทพารามิเตอร์ ปัญหาความคลุมเครือเกิดขึ้นเมื่อตัวสร้างคลาสสองตัวมีลายเซ็นเหมือนกัน
คอมไพเลอร์ไม่สามารถแยกความแตกต่างระหว่างทั้งสองได้ และด้วยเหตุนี้จึงส่งคืนการแจ้งเตือนข้อผิดพลาด เมื่อคอนสตรัคเตอร์ที่มีลายเซ็นต่างกันทำงานหนักเกินไป คอมไพเลอร์จะกำหนดคอนสตรัคเตอร์ที่จะเรียกใช้ตามจำนวนพารามิเตอร์อินพุตของออบเจกต์
การใช้ตัวสร้างโอเวอร์โหลด
เนื่องจากโครงสร้างที่มากเกินไปทำให้สามารถสร้างวัตถุของคลาสเฉพาะได้หลายวิธี จึงมักใช้ในโปรแกรม Java ตามความต้องการของโปรแกรมเมอร์ ด้วยการใช้คอนสตรัคเตอร์โอเวอร์โหลด ออบเจ็กต์สามารถเริ่มต้นได้ด้วยประเภทข้อมูลที่แตกต่างกัน
พิจารณาว่าวัตถุที่มีตัวแปรอินสแตนซ์ของคลาสสามตัวเป็นตัวอย่างที่จะกำหนดค่าเฉพาะให้กับตัวแปรอินสแตนซ์ที่สองและตัวแปรอื่น ๆ จะได้รับการกำหนดค่าเริ่มต้น สิ่งนี้สามารถทำได้โดยการประกาศตัวสร้างหลายตัวตามลายเซ็นที่แตกต่างกันในคลาสองค์ประกอบ
อ่าน: Java Career Components & Architecture อธิบาย
ตัวอย่างโค้ดสำหรับการใช้งาน Constructor Overloading ใน Java
ให้เราพิจารณาโปรแกรมที่คลาส Employee มีคอนสตรัคเตอร์สามตัว ตามค่าที่ส่งไป แต่ละค่าจะถูกเรียกใช้เพื่อเริ่มต้นวัตถุ
การใช้ข้อมูลอ้างอิงนี้ใน Java
เมธอดและตัวสร้างอินสแตนซ์ทั้งหมดยินดีต้อนรับพารามิเตอร์โดยนัยที่เรียกว่า 'นี่' ซึ่งใช้เพื่ออ้างถึงอ็อบเจ็กต์ปัจจุบัน วัตถุปัจจุบันคือวัตถุที่เรียกใช้เมธอด เราสามารถใช้การอ้างอิง 'นี้' เพื่ออ้างถึงวัตถุปัจจุบันภายในตัวสร้างหรือวิธีการใดๆ การอ้างอิง 'นี้' สามารถใช้ เช่นเดียวกับการอ้างอิงอ็อบเจ็กต์อื่นๆ เพื่อเข้าถึงวิธีการของอินสแตนซ์ ตัวสร้าง และตัวแปร ภายในวิธีการหรือเนื้อหาของตัวสร้าง
สถานการณ์สำคัญบางประการที่ใช้การอ้างอิง 'นี้' ได้แก่:
- เมื่อชื่อของพารามิเตอร์ต่างจากชื่อตัวแปรอินสแตนซ์
- เมื่อการอ้างอิงถูกส่งไปยังวัตถุปัจจุบันและพารามิเตอร์ไปยังวิธีการอื่น
- เมื่อ Constructor ถูกเรียกใช้จาก Constructor อื่น
อาร์กิวเมนต์อ้างอิง this() ต้องตรงกับอาร์กิวเมนต์ของตัวสร้างเป้าหมายในกรณีนี้ ฟังก์ชัน this() ต้องเป็นคำสั่งแรกภายในตัวสร้าง ในกรณีพิเศษ เช่น ความซับซ้อนของรูทีนการเริ่มต้นใช้งาน ฟังก์ชันนี้สามารถใช้ในการกำจัดโค้ดที่ซ้ำกันในคอนสตรัคเตอร์หลายตัว
เรียนรู้ หลักสูตรการพัฒนาซอฟต์แวร์ ออนไลน์จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม Executive PG โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
ประโยชน์ของ Constructor Overloading ใน Java
ข้อได้เปรียบหลักของการใช้ Constructor Overloading ขณะเขียนโปรแกรม Java คือ:
- การโอเวอร์โหลดของคอนสตรัคเตอร์ช่วยให้บรรลุผลสำเร็จของความหลากหลายแบบคงที่
- อินสแตนซ์ของคลาสสามารถเริ่มต้นได้หลายวิธีด้วยการใช้คอนสตรัคเตอร์โอเวอร์โหลด
- ช่วยอำนวยความสะดวกในกระบวนการกำหนดคอนสตรัคเตอร์หลายตัวในคลาสที่มีลายเซ็นเฉพาะ
- คอนสตรัคเตอร์ที่โอเวอร์โหลดแต่ละตัวทำงานหลายอย่างเพื่อวัตถุประสงค์ที่ระบุ
สรุป
- คอนสตรัคเตอร์โอเวอร์โหลดใน Java หมายถึงการใช้คอนสตรัคเตอร์มากกว่าหนึ่งตัวในคลาสอินสแตนซ์ อย่างไรก็ตาม คอนสตรัคเตอร์ที่โอเวอร์โหลดแต่ละตัวต้องมีลายเซ็นต่างกัน
- เพื่อให้การคอมไพล์สำเร็จ คอนสตรัคเตอร์แต่ละตัวต้องมีรายการอาร์กิวเมนต์ที่แตกต่างกัน
- รายการพารามิเตอร์ประกอบด้วยลำดับและประเภทของอาร์กิวเมนต์อินพุต
- ตัวสร้างสองตัวในคลาสที่มีรายการพารามิเตอร์เหมือนกันไม่สามารถทำได้ใน Java
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาซอฟต์แวร์ฟูลสแตก ให้ลองดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์ – ความเชี่ยวชาญพิเศษด้านการพัฒนาแบบเต็มสแต็ก ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง 9+ โครงการและการมอบหมายงาน สถานะศิษย์เก่า IIIT-B โครงการหลักและความช่วยเหลือด้านงานกับบริษัทชั้นนำ