ตัวสร้างโอเวอร์โหลดใน 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

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

สถานการณ์สำคัญบางประการที่ใช้การอ้างอิง 'นี้' ได้แก่:

  1. เมื่อชื่อของพารามิเตอร์ต่างจากชื่อตัวแปรอินสแตนซ์
  2. เมื่อการอ้างอิงถูกส่งไปยังวัตถุปัจจุบันและพารามิเตอร์ไปยังวิธีการอื่น
  3. เมื่อ Constructor ถูกเรียกใช้จาก Constructor อื่น

อาร์กิวเมนต์อ้างอิง this() ต้องตรงกับอาร์กิวเมนต์ของตัวสร้างเป้าหมายในกรณีนี้ ฟังก์ชัน this() ต้องเป็นคำสั่งแรกภายในตัวสร้าง ในกรณีพิเศษ เช่น ความซับซ้อนของรูทีนการเริ่มต้นใช้งาน ฟังก์ชันนี้สามารถใช้ในการกำจัดโค้ดที่ซ้ำกันในคอนสตรัคเตอร์หลายตัว

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

ประโยชน์ของ Constructor Overloading ใน Java

ข้อได้เปรียบหลักของการใช้ Constructor Overloading ขณะเขียนโปรแกรม Java คือ:

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

สรุป

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

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาซอฟต์แวร์ฟูลสแตก ให้ลองดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์ – ความเชี่ยวชาญพิเศษด้านการพัฒนาแบบเต็มสแต็ก ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง 9+ โครงการและการมอบหมายงาน สถานะศิษย์เก่า IIIT-B โครงการหลักและความช่วยเหลือด้านงานกับบริษัทชั้นนำ

เตรียมความพร้อมสู่อาชีพแห่งอนาคต

สมัคร Executive PG Program ในการพัฒนาซอฟต์แวร์ โดย IIIT-B