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

Parameterized Constructors ใน Java คืออะไร


Constructor คล้ายเมธอด เรียกตอนสร้างอ็อบเจกต์ ใช้ initialize instance variables ชื่อตรงคลาส ไม่มี return type

มี 2 ประเภท: Parameterized Constructors และ No-arg Constructors

Parameterized Constructor

รับพารามิเตอร์มา initialize instance variables สร้างอ็อบเจกต์ด้วยค่าที่ต่างกันได้

Syntax

public class Sample {
    int i;
    public Sample(int i) {
        this.i = i;
    }
}

ตัวอย่างที่ 1: พื้นฐาน

public class Test {
    String val;
    Test(String val) {
        this.val = val;
    }
    public static void main(String args[]) {
        Test obj = new Test("test");
        System.out.println(obj.val);
    }
}

Output

test

ตัวอย่างที่ 2: หลายพารามิเตอร์ + Scanner

import java.util.Scanner;

public class Test {
    int num;
    String data;
    float flt;
    
    Test(int num, String data, float flt) {
        this.num = num;
        this.data = data;
        this.flt = flt;
    }
    
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter an integer value: ");
        int num = sc.nextInt();
        System.out.println("Enter a string value: ");
        String data = sc.next();
        System.out.println("Enter a floating point value: ");
        float flt = sc.nextFloat();
        
        Test obj = new Test(num, data, flt);
        System.out.println(obj.num);
        System.out.println(obj.data);
        System.out.println(obj.flt);
    }
}

Output

Enter an integer value: 1024
Enter a string value: test
Enter a floating point value: 11.2
1024
test
11.2

Constructor Overloading

สร้าง Constructor หลายตัวในคลาสเดียวกัน ต่างกันที่พารามิเตอร์

public class Example {
    private int id;
    private String name;
    
    // 1. Default
    public Example() { this(0, "Unknown"); }
    
    // 2. Parameterized - id only
    public Example(int id) { this(id, "Unknown"); }
    
    // 3. Parameterized - name only
    public Example(String name) { this(0, name); }
    
    // 4. Parameterized - both (Primary)
    public Example(int id, String name) {
        this.id = id;
        this.name = name;
    }
}

Best Practices

  • ใช้ this() chain ไปยัง constructor "หลัก" ที่มีพารามิเตอร์ครบ
  • Validate input ใน constructor (throw IllegalArgumentException)
  • ทำ fields เป็น final ได้ หาก immutable object
  • หลีกเลี่ยง logic ซับซ้อนใน constructor - ใช้ Factory Method แทน