Constructor คล้ายกับเมธอด แต่จะถูกเรียกใช้เมื่อสร้างอ็อบเจกต์ของคลาส ใช้เพื่อกำหนดค่าเริ่มต้นให้ตัวแปรอินสแตนซ์ ชื่อ constructor ต้องตรงกับชื่อคลาส และไม่มี return type
Default Constructor คือ constructor ที่ Java compiler สร้างให้โดยอัตโนมัติ หากผู้เขียนโค้ดไม่ได้สร้าง constructor ใดๆ ขึ้นมา constructor นี้จะกำหนดค่าเริ่มต้นให้สมาชิกข้อมูล (data members) ตามชนิดข้อมูล เช่น 0 สำหรับ int, 0.0 สำหรับ double, false สำหรับ boolean, null สำหรับอ็อบเจกต์
ตัวอย่างที่ไม่มี Constructor ระบุ
public class Sample {
int num;
public static void main(String args[]) {
System.out.println(new Sample().num);
}
}
เมื่อคอมไพล์และรัน โปรแกรมจะแสดง 0 เพราะ default constructor กำหนดค่า num = 0
คำสั่ง javap แสดงข้อมูลเกี่ยวกับฟิลด์ constructor และเมธอดของคลาส หลังคอมไพล์แล้ว รัน javap Sample จะเห็น default constructor ที่ compiler เพิ่มให้:
D:\>javap Sample
Compiled from "Sample.java"
public class Sample {
int num;
public Sample();
public static void main(java.lang.String[]);
}
ตัวอย่างเปรียบเทียบ Default และ Parameterized Constructor
public class Sample {
int num;
// Default constructor (เขียนเอง)
Sample() {
num = 100;
}
// Parameterized constructor
Sample(int num) {
this.num = num;
}
public static void main(String args[]) {
System.out.println(new Sample().num); // ใช้ default constructor
System.out.println(new Sample(1000).num); // ใช้ parameterized constructor
}
}
ผลลัพธ์
100 1000
สรุป
- Default constructor ถูกสร้างโดย compiler อัตโนมัติ ถ้าไม่มี constructor ใดๆ ถูกกำหนด
- คุณสามารถเขียน default constructor เองได้ (no-arg constructor)
- ถ้าเขียน constructor ใดๆ เอง compiler จะไม่สร้าง default constructor ให้อีก