Default Constructor
- Default constructor คือ 0 argument constructor ที่มี no-argument call ไปยัง super class constructor
- การกำหนดค่าเริ่มต้น (default values) ให้กับ objects ที่เพิ่งสร้าง คือหน้าที่หลักของ default constructor
- Compiler เขียน default constructor ในโค้ดก็ต่อเมื่อโปรแกรมเมอร์ไม่ได้เขียน constructor ใดๆ ในคลาส
- Access modifier ของ default constructor จะเหมือนกับ class modifier เสมอ แต่กฎนี้ใช้ได้เฉพาะ "public" และ "default" modifiers
เมื่อไหร่คอมไพเลอร์จะเพิ่ม default constructor
- คอมไพเลอร์เพิ่ม default constructor ในโค้ดก็ต่อเมื่อโปรแกรมเมอร์ไม่ได้เขียน constructor ใดๆ ในโค้ด
- ถ้าโปรแกรมเมอร์เขียน constructor ใดๆ ในโค้ด คอมไพเลอร์จะไม่เพิ่ม constructor ใดๆ
- ทุก default constructor เป็น 0 argument constructor แต่ไม่ใช่ทุก 0 argument constructor เป็น default constructor
Parameterized Constructors
- Parameterized constructors คือ constructors ที่มี จำนวน arguments เฉพาะ ที่ต้องส่งผ่าน
- วัตถุประสงค์ของ parameterized constructor คือการกำหนดค่าที่ผู้ใช้ต้องการเฉพาะเจาะจง ให้กับ instance variables ของ objects ที่ต่างกัน
- Parameterized constructor เขียนโดยโปรแกรมเมอร์โดยตรง (explicitly)
- Access modifier ของ default constructor จะเหมือนกับ class modifier เสมอ แต่กฎนี้ใช้ได้เฉพาะ "public" และ "default" modifiers
ตัวอย่าง
public class Student {
int roll_no;
String stu_name;
Student(int i, String n) { // Parameterized constructor
roll_no = i;
stu_name = n;
}
void display() {
System.out.println(roll_no+" "+stu_name);
}
public static void main(String args[]) {
Student s1 = new Student(1,"Adithya");
Student s2 = new Student(2,"Jai");
s1.display();
s2.display();
}
}
ในโปรแกรมข้างต้น โปรแกรมเมอร์กำหนด parameterized constructor 1 ตัวที่มี 2 parameters ตอนนี้คอมไพเลอร์ไม่ได้เพิ่ม default constructor ในโค้ด และโปรแกรมเมอร์ก็ไม่ได้เขียน 0 argument constructor ใดๆ
ผลลัพธ์
1 Adithya 2 Jai