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

คอนสตรักเตอร์ใน Java: การสร้างและใช้งาน

ใน Java เมธอดใช้เก็บบล็อกโค้ดที่ทำหน้าที่เฉพาะเจาะจง เมื่อทำงานกับเมธอด จะพบแนวคิด constructors (คอนสตรักเตอร์)

คอนสตรักเตอร์คือเมธอดพิเศษใช้สำหรับ เริ่มต้นออบเจ็กต์ (initialize objects) ใน Java ถูกเรียกเมื่อสร้างออบเจ็กต์ของคลาส ใช้ตั้งค่าเริ่มต้น (initial values) ให้ออบเจ็กต์

บทช่วยสอนนี้อธิบายพื้นฐานคอนสตรักเตอร์ Java และวิธีใช้งาน พร้อมตัวอย่าง จบบทแล้วคุณจะใช้คอนสตรักเตอร์อย่างมืออาชีพ

คอนสตรักเตอร์ใน Java

คอนสตรักเตอร์เริ่มต้นออบเจ็กต์ที่เพิ่งสร้าง ก่อนนำไปใช้ เช่น คอนสตรักเตอร์ Supplier จะสร้างออบเจ็กต์พร้อมคุณสมบัติเริ่มต้นของผู้จัดจำหน่าย

คอนสตรักเตอร์มีชื่อเดียวกับคลาส และ ไม่คืนค่า (no return type) ตัวอย่าง:

class Supplier { 
    Supplier() { 
        // Code here 
    } 
}

คอนสตรักเตอร์ Supplier ชื่อเดียวกับคลาส ไม่มี return type (void) - จุดแตกต่างจากเมธอดทั่วไป

กฎ 2 ข้อตอนประกาศคอนสตรักเตอร์:

  1. ชื่อคอนสตรักเตอร์ต้องตรงกับชื่อคลาสทุกประการ
  2. คอนสตรักเตอร์ไม่สามารถคืนค่าได้

วิธีสร้างคอนสตรักเตอร์ใน Java

มี 2 ประเภท: no-arg constructors (ไม่มีพารามิเตอร์) และ parameterized constructors (มีพารามิเตอร์)

No-arg Constructors

สมมติร้านขายของชำ ต้องการโปรแกรมเก็บข้อมูลผู้จัดจำหน่ายชีสหลัก มีคอนสตรักเตอร์เก็บข้อมูล และพิมพ์ค่าออกมา

class MainCheeseSupplier { 
    private String name; 
    private String address; 
    private int discountRate; 
    private String payDate; 
    private MainCheeseSupplier() { 
        name = "J. Acker Dairy"; 
        address = "1600 Johnson Ave. San Francisco 94127"; 
        discountRate = 2; 
        payDate = "Last day of the month."; 
    } 
    public static void main(String[] args) { 
        MainCheeseSupplier jadairy = new MainCheeseSupplier(); 
        System.out.println("Name: " + jadairy.name); 
        System.out.println("Address: " + jadairy.address); 
        System.out.println("Discount rate: " + jadairy.discountRate); 
        System.out.println("Pay date: " + jadairy.payDate); 
    } 
}

ผลลัพธ์:

Name: J. Acker Dairy
Address: 1600 Johnson Ave. San Francisco 94127
Discount rate: 2
Pay date: Last day of the month.

อธิบาย: คลาส MainCheeseSupplier มีตัวแปร private 4 ตัว คอนสตรักเตอร์ MainCheeseSupplier() ตั้งค่าเริ่มต้น ใน main สร้างอินสแตนซ์ jadairy แล้วพิมพ์แต่ละค่า เรียกว่า no-arg constructor เพราะไม่รับพารามิเตอร์

Parameterized Constructor

กรณีต้องการส่งอาร์กิวเมนต์ผ่านคอนสตรักเตอร์ เรียกว่า parameterized constructor

กลับไปร้านขายของชำ: ต้องการกำหนดค่าผู้จัดจำหน่ายใน main program แล้วส่งให้คอนสตรักเตอร์ตอนเริ่มรัน อาจเพราะมีหลายผู้จัดจำหน่ายค่าต่างกัน หรือไม่อยาก hardcode ค่าในคอนสตรักเตอร์

class MainCheeseSupplier { 
    String name; 
    String address; 
    int discountRate; 
    String payDate; 
    public MainCheeseSupplier(String supplierName, String supplierAddress, int supplierDiscountRate, String supplierPayDate) { 
        name = supplierName; 
        address = supplierAddress; 
        discountRate = supplierDiscountRate; 
        payDate = supplierPayDate; 
    } 
    public static void main(String[] args) { 
        MainCheeseSupplier jadairy = new MainCheeseSupplier("J. Acker Dairy", "1600 Johnson Ave. San Francisco 94127", 2, "Last day of the month."); 
        System.out.println("Name: " + jadairy.name); 
        System.out.println("Address: " + jadairy.address); 
        System.out.println("Discount rate: " + jadairy.discountRate); 
        System.out.println("Pay date: " + jadairy.payDate); 
    } 
}

ผลลัพธ์เหมือนเดิม แต่ต่างตรงที่: ค่าไม่ได้ตั้งในคอนสตรักเตอร์ แต่ส่งผ่านพารามิเตอร์ตอนสร้างอินสแตนซ์

คอนสตรักเตอร์รับ 4 พารามิเตอร์: supplierName, supplierAddress, supplierDiscountRate, supplierPayDate ตอน new MainCheeseSupplier(...) ส่งค่าเข้าไป คอนสตรักเตอร์อ่านค่าและกำหนดให้ตัวแปร instance

สรุป

คอนสตรักเตอร์ Java เป็นเมธอดพิเศษเริ่มต้นออบเจ็กต์ เรียกเมื่อสร้างออบเจ็กต์ของคลาส ใช้ตั้งค่าเริ่มต้นแอตทริบิวต์ บทช่วยสอนนี้อธิบายการสร้างและใช้งานทั้ง no-arg และ parameterized constructors ตอนนี้คุณพร้อมใช้คอนสตรักเตอร์ Java อย่างมืออาชีพแล้ว!