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

ความแตกต่างระหว่าง Default Constructor และ Parameterized Constructor ใน Java

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