เราได้พูดถึงเรื่อง Java แล้วคอนสตรัคเตอร์ในบทช่วยสอนก่อนหน้าของเราและเรายังได้พูดถึงคอนสตรัคเตอร์ประเภทต่าง ๆ ตัวสร้างเริ่มต้นตัวสร้างพารามิเตอร์และตัวสร้างการคัดลอก ก่อนที่เราจะเจาะลึกลงไปในรายละเอียดของการสร้างมากเกินไปเราจะสรุปย่อนวกรรมิกอีกครั้ง
ย่อตัวสร้าง
- ตัวสร้างถูกใช้เพื่อกำหนดค่าเริ่มต้นให้กับตัวแปรอินสแตนซ์ของคลาสทันทีเมื่อสร้างวัตถุ
- ตัวสร้างจะถูกเรียกใช้โดยผู้ประกอบการใหม่เสมอ
- ตัวสร้างเริ่มต้นที่ไม่มีอาร์กิวเมนต์จะถูกเรียกโดยอัตโนมัติโดย Java Virtual Machine (JVM)
- Constructors ถูกประกาศเช่นเดียวกับที่เราประกาศวิธีการยกเว้นว่าตัวสร้างไม่มีประเภทผลตอบแทนใด ๆ
Constructor Overloading ใน Java คืออะไร
เมื่อตัวสร้างมีชื่อเดียวกันกับอาร์กิวเมนต์ที่แตกต่างกัน (อาจแตกต่างกันในจำนวน / ประเภท / ลำดับของการขัดแย้ง) เรียกว่า Constructor Overloading
คุณสมบัติ:
- ในคลาสแนวคิดของตัวสร้างการโอเวอร์โหลดไม่อนุญาตให้ผู้ใช้ภายนอกทราบเกี่ยวกับการประมวลผลภายในของระบบ
- Constructor ที่โอเวอร์โหลดมีความแตกต่างกันในจำนวนพารามิเตอร์หรือชนิดของพารามิเตอร์หรือลำดับของพารามิเตอร์
- JVM สร้างความแตกต่างของตัวสร้างตามเกณฑ์ต่อไปนี้
- จำนวนพารามิเตอร์
- ประเภทของพารามิเตอร์
- ลำดับของพารามิเตอร์
- ตัวสร้างการบรรทุกเกินพิกัดช่วยให้ผู้ใช้เพื่อให้บรรลุความหลากหลายเวลารวบรวม
โปรแกรม
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()); } }
เอาท์พุต
คำอธิบายของรหัส Java & ผลผลิต
ที่นี่ในรูปที่คลาสตัวสร้างรูปที่ () คือมากไปด้วยข้อโต้แย้งที่แตกต่างกันเพื่อเริ่มต้นตัวแปรอินสแตนซ์เพื่อคำนวณปริมาณของตัวเลขทางเรขาคณิตเหล่านั้น ในรูปที่เรียนเราได้กำหนดหนึ่งตัวสร้างเริ่มต้นเพื่อเริ่มต้นตัวแปรอินสแตนซ์ทั้งหมดที่มีค่าเริ่มต้นบางอย่าง นี่คือ -1 คอนสตรัคเตอร์สองรายการถัดไปคือคอนสตรัคเตอร์แบบพารามิเตอร์ซึ่งในตัวสร้างแรกมิติทั้งหมดจะถูกระบุและในมิติที่หนึ่งสำหรับคิวบ์ถูกระบุ อันสุดท้ายคือตัวสร้างการคัดลอกเมื่อใดก็ตามที่เราต้องการตัวเลขใด ๆ ซึ่งอาจจะเป็นเช่นเดียวกับรูปใด ๆ ที่มีอยู่ จากนั้นเราสามารถใช้ตัวสร้างนี้เพื่อเริ่มต้นขนาดของรูปที่เราจะต้องสร้าง ดังนั้นในระหว่างการสร้างวัตถุ JVM สร้างความแตกต่างให้กับคอนสตรัคเตอร์ที่โอเวอร์โหลดทั้งหมดเหล่านี้บนพื้นฐานของเกณฑ์การแก้ปัญหาที่กล่าวถึงข้างต้นในคุณสมบัติ
อีกหนึ่งพื้นฐานที่ฉันต้องการสรุปกำลังถูกประกาศตัวสร้างพารามิเตอร์และไม่มีการประกาศค่าเริ่มต้นอย่างชัดเจนหากคุณต้องการสร้างวัตถุของคลาสนั้นด้วยตัวสร้างเริ่มต้นของคลาสนั้นคุณจะได้รับข้อผิดพลาดเช่นเดียวกับเมื่อคุณประกาศคอนสตรัคต์ที่กำหนดพารามิเตอร์ในเวลานั้น JVM คุณต้องระบุ Constructor เริ่มต้นอย่างชัดเจนในขณะที่ให้ Constructor ที่กำหนดพารามิเตอร์เพื่อหลีกเลี่ยงข้อผิดพลาดในการเริ่มต้น
N.B: การแปลงชนิดข้อมูลอัตโนมัตินั้นเป็นจริงสำหรับคอนสตรัคเกินพิกัดยัง การแปลงนี้เป็นจริงสำหรับประเภทข้อมูลที่ต่ำกว่า (เช่น int) เป็นประเภทข้อมูลที่สูงกว่า (เช่นสองเท่า) ไม่ใช่สำหรับการแปลงกลับ (สองเท่าเป็น int)
ต่อไปเราจะเรียนรู้เกี่ยวกับ วิธีคืนวัตถุจากวิธีการจาวา.
ชำระเงินบทเรียนที่มีประโยชน์มากขึ้นและแนวทางที่ชัดเจนในการเขียนโปรแกรม Java ที่นี่
ความคิดเห็น