Quá tải hàm xây dựng trong Java

Quá tải hàm tạo nào trong Java?

Java Nạp chồng hàm tạo là một kỹ thuật trong đó một lớp có thể có bất kỳ số lượng hàm tạo nào khác nhau trong danh sách tham số. Trình biên dịch phân biệt các hàm tạo này bằng cách tính đến số lượng tham số trong danh sách và kiểu của chúng.

Ví dụ về các hàm tạo hợp lệ cho lớp Account là

Account(int a);
Account (int a,int b);
Account (String a,int b);

Ví dụ 2: Để hiểu quá trình nạp chồng của hàm tạo trong Java

Bước 1) Nhập mã vào trình chỉnh sửa.

class Demo{
      int  value1;
      int  value2;
      /*Demo(){
       value1 = 10;
       value2 = 20;
       System.out.println("Inside 1st Constructor");
     }*/
     Demo(int a){
      value1 = a;
      System.out.println("Inside 2nd Constructor");
    }
    Demo(int a,int b){
    value1 = a;
    value2 = b;
    System.out.println("Inside 3rd Constructor");
   }
   public void display(){
      System.out.println("Value1 === "+value1);
      System.out.println("Value2 === "+value2);
  }
  public static void main(String args[]){
    Demo d1 = new Demo();
    Demo d2 = new Demo(30);
    Demo d3 = new Demo(30,40);
    d1.display();
    d2.display();
    d3.display();
 }
}

Bước 2) Lưu, biên dịch và chạy mã.

Bước 3) Lỗi =?. Hãy thử và gỡ lỗi trước khi chuyển sang bước tiếp theo của Java quá tải hàm tạo

Bước 4) Mỗi lớp đều có một mặc định Trình xây dựng trong Java. Hàm tạo quá tải mặc định Java cho lớp học thử is Thử nghiệm(). Trong trường hợp bạn không cung cấp hàm tạo này, trình biên dịch sẽ tạo nó cho bạn và khởi tạo các biến thành giá trị mặc định. Bạn có thể chọn ghi đè hàm tạo mặc định này và khởi tạo các biến thành giá trị mong muốn như trong Ví dụ 1.

Nhưng nếu bạn chỉ định một hàm tạo được tham số hóa như Demo(int a) và muốn sử dụng hàm tạo mặc định Java Demo(), bạn bắt buộc phải chỉ định nó.

Nói cách khác, trong trường hợp hàm tạo quá tải của bạn trong Java bị ghi đè và bạn muốn sử dụng hàm tạo mặc định Java, nó cần phải được chỉ định.

Bước 5) Dòng bỏ ghi chú #4-8. Lưu, biên dịch và chạy mã.

Tại sao chúng ta cần Constructor Overloading trong Java?

Quá tải hàm tạo trong Java cho phép nhiều constructor trong một lớp, mỗi constructor có danh sách tham số khác nhau. Nó tăng cường tính linh hoạt và cải thiện hiệu quả của mã.

  • Tính linh hoạt trong việc tạo đối tượng: Quá tải hàm tạo cho phép bạn khởi tạo các đối tượng theo nhiều cách khác nhau, tùy thuộc vào số lượng hoặc loại tham số.
  • Khả năng sử dụng lại mã: Bạn có thể tái sử dụng logic của hàm tạo bằng cách gọi một hàm tạo từ hàm tạo khác bằng cách sử dụng từ khóa this().
  • Cải thiện khả năng đọc: Các hàm tạo quá tải giúp làm cho mã trực quan hơn bằng cách cung cấp các tùy chọn hàm tạo cụ thể cho các nhu cầu khởi tạo khác nhau.
  • Khởi tạo mặc định và tùy chỉnh: Quá tải hàm tạo cho phép bạn dễ dàng tạo cả đối tượng mặc định và đối tượng được khởi tạo tùy chỉnh.

Câu Hỏi Thường Gặp

xây dựng là một phương thức đặc biệt được sử dụng để khởi tạo một đối tượng mới được tạo và được gọi ngay sau khi bộ nhớ được cấp phát cho đối tượng đó. Nó có thể được sử dụng để khởi tạo các đối tượng theo giá trị mong muốn hoặc giá trị mặc định tại thời điểm tạo đối tượng. Người lập trình không bắt buộc phải viết hàm tạo cho một lớp.

Nếu không có hàm tạo do người dùng định nghĩa nào được cung cấp cho một lớp, trình biên dịch sẽ khởi tạo các biến thành viên về giá trị mặc định của nó.

  • kiểu dữ liệu số được đặt thành 0
  • kiểu dữ liệu char được đặt thành ký tự null('\0')
  • biến tham chiếu được đặt thành null

  1. Nó có cùng tên như lớp
  2. Nó không nên trả về một giá trị thậm chí làm mất hiệu lực

Ví dụ 1: Tạo hàm tạo đầu tiên của bạn trong Java

Bước 1) Nhập chương trình xây dựng sau vào Java biên tập viên.

class Demo{
      int  value1;
      int  value2;
      Demo(){
         value1 = 10;
         value2 = 20;
         System.out.println("Inside Constructor");
     }
 
     public void display(){
        System.out.println("Value1 === "+value1);
        System.out.println("Value2 === "+value2);
    }
 
   public static void main(String args[]){
       Demo d1 = new Demo();
      d1.display();
  }
}

Bước 2) Lưu, Chạy & Biên dịch chương trình xây dựng trong Java và quan sát đầu ra.

Đầu ra mong đợi:

Inside Constructor
Value1 === 10
Value2 === 20

Hãy xem xét một tình huống trong đó một lớp cơ sở được mở rộng bởi một đứa trẻ. Bất cứ khi nào một đối tượng của lớp con được tạo, hàm tạo của lớp cha sẽ được gọi trước tiên. Đây được gọi là Chuỗi xây dựng.

Ví dụ 3: Để hiểu chuỗi hàm tạo

Bước 1) Sao chép đoạn mã sau vào trình soạn thảo.

class Demo{
   int  value1;
   int  value2;
    Demo(){
      value1 = 1;
      value2 = 2;
      System.out.println("Inside 1st Parent Constructor");
   }
   Demo(int a){
      value1 = a;
      System.out.println("Inside 2nd Parent Constructor");
   }
  public void display(){
     System.out.println("Value1 === "+value1);
     System.out.println("Value2 === "+value2);
  }
  public static void main(String args[]){
     DemoChild d1 = new DemoChild();
     d1.display();
  }
}
class DemoChild extends Demo{
    int value3;
    int value4;
    DemoChild(){
    //super(5);
     value3 = 3;
     value4 = 4;
    System.out.println("Inside the Constructor of Child");
    }
    public void display(){
      System.out.println("Value1 === "+value1);
      System.out.println("Value2 === "+value2);
      System.out.println("Value1 === "+value3);
      System.out.println("Value2 === "+value4);
   }
}

Bước 2) Chạy mã. Do chuỗi hàm tạo, khi đối tượng của lớp con DemoChild được tạo, hàm tạo Demo() của lớp cha được gọi trước và sau đó hàm tạo DemoChild() của lớp con được tạo.

Đầu ra mong đợi:

Inside 1st Parent Constructor
Inside the Constructor of Child
Value1 === 1
Value2 === 2
Value1 === 3
Value2 === 4

Bước 3) Bạn có thể quan sát thấy hàm tạo của lớp cha Demo bị ghi đè. Điều gì sẽ xảy ra nếu bạn muốn gọi hàm tạo bị ghi đè Demo(int a) thay vì hàm tạo mặc định Demo() khi đối tượng con của bạn được tạo?

Trong những trường hợp như vậy, bạn có thể sử dụng từ khóa "siêu" để gọi các hàm tạo bị ghi đè của lớp cha.

Cú pháp: -

super();
--or--
super(parameter list);

Ví dụ: Nếu hàm tạo của bạn giống như Demo(Tên chuỗi, int a), bạn sẽ chỉ định siêu(“Java”,5). Nếu được sử dụng, từ khóa super cần phải là dòng mã đầu tiên trong hàm tạo của lớp con.

Bước 4) Bỏ ghi chú dòng # 26 và chạy mã. Quan sát đầu ra.

Đầu ra:

Inside 2nd Parent Constructor
Inside the Constructor of Child
Value1 === 5
Value2 === 0
Value1 === 3
Value2 === 4