Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

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


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 ให้อีก