- - บทช่วยสอน: Constructor Overloading ใน Java

บทช่วยสอน: Constructor โอเวอร์โหลดใน Java

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

ย่อตัวสร้าง

  • ตัวสร้างถูกใช้เพื่อกำหนดค่าเริ่มต้นให้กับตัวแปรอินสแตนซ์ของคลาสทันทีเมื่อสร้างวัตถุ
  • ตัวสร้างจะถูกเรียกใช้โดยผู้ประกอบการใหม่เสมอ
  • ตัวสร้างเริ่มต้นที่ไม่มีอาร์กิวเมนต์จะถูกเรียกโดยอัตโนมัติโดย Java Virtual Machine (JVM)
  • Constructors ถูกประกาศเช่นเดียวกับที่เราประกาศวิธีการยกเว้นว่าตัวสร้างไม่มีประเภทผลตอบแทนใด ๆ

Constructor Overloading ใน Java คืออะไร

เมื่อตัวสร้างมีชื่อเดียวกันกับอาร์กิวเมนต์ที่แตกต่างกัน (อาจแตกต่างกันในจำนวน / ประเภท / ลำดับของการขัดแย้ง) เรียกว่า Constructor Overloading

คุณสมบัติ:

  • ในคลาสแนวคิดของตัวสร้างการโอเวอร์โหลดไม่อนุญาตให้ผู้ใช้ภายนอกทราบเกี่ยวกับการประมวลผลภายในของระบบ
  • Constructor ที่โอเวอร์โหลดมีความแตกต่างกันในจำนวนพารามิเตอร์หรือชนิดของพารามิเตอร์หรือลำดับของพารามิเตอร์
  • JVM สร้างความแตกต่างของตัวสร้างตามเกณฑ์ต่อไปนี้
    1. จำนวนพารามิเตอร์
    2. ประเภทของพารามิเตอร์
    3. ลำดับของพารามิเตอร์
  • ตัวสร้างการบรรทุกเกินพิกัดช่วยให้ผู้ใช้เพื่อให้บรรลุความหลากหลายเวลารวบรวม

โปรแกรม

class Figure{
double width;
double height;
double depth;
/* Default Constructor */
Figure(){
width = -1;
height = -1;
depth = -1;
}
/* Parameterized constructor when all the dimensions are specified */
Figure(double width,double height,double depth){
this.width = width;
this.height = height;
this.depth = depth;
}
/* Parameterized constructor to calculate volume of Cube */
Figure(double length){
width = height = depth = length;
}
/*Copy Constructor */
Figure(Figure fig){
width = fig.width;
height = fig.height;
depth = fig.depth;
}
/* Method to calculate Volume */
double volume(){
return width*height*depth;
}
}
class CalculateVolume{
public static void main(String args[]){
Figure fig = new Figure();
Figure pp = new Figure(2,3,4);
Figure cube = new Figure(3);
Figure box = new Figure(pp);
System.out.println("Volume of default Figure is: "+fig.volume());
System.out.println("Volume of Parallelopiped is: "+pp.volume());
System.out.println("Volume of Cube is: "+cube.volume());
System.out.println("Volume of Box is: "+box.volume());
}
}

เอาท์พุต

constructor_overload

คำอธิบายของรหัส Java & ผลผลิต

ที่นี่ในรูปที่คลาสตัวสร้างรูปที่ () คือมากไปด้วยข้อโต้แย้งที่แตกต่างกันเพื่อเริ่มต้นตัวแปรอินสแตนซ์เพื่อคำนวณปริมาณของตัวเลขทางเรขาคณิตเหล่านั้น ในรูปที่เรียนเราได้กำหนดหนึ่งตัวสร้างเริ่มต้นเพื่อเริ่มต้นตัวแปรอินสแตนซ์ทั้งหมดที่มีค่าเริ่มต้นบางอย่าง นี่คือ -1 คอนสตรัคเตอร์สองรายการถัดไปคือคอนสตรัคเตอร์แบบพารามิเตอร์ซึ่งในตัวสร้างแรกมิติทั้งหมดจะถูกระบุและในมิติที่หนึ่งสำหรับคิวบ์ถูกระบุ อันสุดท้ายคือตัวสร้างการคัดลอกเมื่อใดก็ตามที่เราต้องการตัวเลขใด ๆ ซึ่งอาจจะเป็นเช่นเดียวกับรูปใด ๆ ที่มีอยู่ จากนั้นเราสามารถใช้ตัวสร้างนี้เพื่อเริ่มต้นขนาดของรูปที่เราจะต้องสร้าง ดังนั้นในระหว่างการสร้างวัตถุ JVM สร้างความแตกต่างให้กับคอนสตรัคเตอร์ที่โอเวอร์โหลดทั้งหมดเหล่านี้บนพื้นฐานของเกณฑ์การแก้ปัญหาที่กล่าวถึงข้างต้นในคุณสมบัติ

อีกหนึ่งพื้นฐานที่ฉันต้องการสรุปกำลังถูกประกาศตัวสร้างพารามิเตอร์และไม่มีการประกาศค่าเริ่มต้นอย่างชัดเจนหากคุณต้องการสร้างวัตถุของคลาสนั้นด้วยตัวสร้างเริ่มต้นของคลาสนั้นคุณจะได้รับข้อผิดพลาดเช่นเดียวกับเมื่อคุณประกาศคอนสตรัคต์ที่กำหนดพารามิเตอร์ในเวลานั้น JVM คุณต้องระบุ Constructor เริ่มต้นอย่างชัดเจนในขณะที่ให้ Constructor ที่กำหนดพารามิเตอร์เพื่อหลีกเลี่ยงข้อผิดพลาดในการเริ่มต้น

N.B: การแปลงชนิดข้อมูลอัตโนมัตินั้นเป็นจริงสำหรับคอนสตรัคเกินพิกัดยัง การแปลงนี้เป็นจริงสำหรับประเภทข้อมูลที่ต่ำกว่า (เช่น int) เป็นประเภทข้อมูลที่สูงกว่า (เช่นสองเท่า) ไม่ใช่สำหรับการแปลงกลับ (สองเท่าเป็น int)

ต่อไปเราจะเรียนรู้เกี่ยวกับ วิธีคืนวัตถุจากวิธีการจาวา.

ชำระเงินบทเรียนที่มีประโยชน์มากขึ้นและแนวทางที่ชัดเจนในการเขียนโปรแกรม Java ที่นี่

ความคิดเห็น