Quá tải hàm xây dựng trong Java
⚡ Tóm tắt thông minh
Quá tải hàm xây dựng trong Java Cho phép một lớp khai báo nhiều hàm tạo khác nhau dựa trên danh sách tham số, mang lại cho các nhà phát triển khả năng khởi tạo đối tượng linh hoạt, tái sử dụng mã sạch hơn thông qua this(), và hành vi dễ dự đoán bất cứ khi nào cần các giá trị mặc định hoặc tùy chỉnh khi khởi tạo.
Nạp chồng hàm tạo là gì? Java?
Quá tải hàm xây dựng trong Java Đây là một kỹ thuật trong đó một lớp khai báo nhiều hàm tạo khác nhau về 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 phân tích số lượng tham số và kiểu dữ liệu của chúng.
Ví dụ về các hàm tạo hợp lệ cho lớp Tài khoản được hiển thị bên dưới:
Account(int a); Account (int a,int b); Account (String a,int b);
Tại sao chúng ta cần nạp chồng hàm tạo trong Java?
Quá tải hàm xây dựng trong Java Cải thiện tính linh hoạt và hiệu quả mã bằng cách cho phép nhiều hàm tạo trong một lớp, mỗi hàm tạo có danh sách tham số khác nhau.
- Tính linh hoạt trong việc tạo đối tượng: Nạp chồng 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 kiểu tham số.
- Code Khả năng tái sử dụng: 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ừ một hàm tạo khác bằng cách sử dụng phương thức sau: cái này() từ khóa.
- Cải thiện khả năng đọc: Các hàm tạo quá tải giúp mã nguồn trở nên trực quan hơn bằng cách cung cấp các tùy chọn 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: Nạp chồng hàm tạo cho phép bạn dễ dàng tạo cả các đối tượng mặc định và các đối tượng được khởi tạo tùy chỉnh.
Ví dụ: Nạp chồng hàm tạo trong Java
Ví dụ sau đây minh họa việc nạp chồng hàm tạo (Constructor Overloading) trong... Java sử dụng một lớp có tên Demo.
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) Đã xảy ra lỗi. Hãy thử gỡ lỗi trước khi tiếp tục bước tiếp theo của quá tải hàm tạo trong phần này. Java.
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 mặc định cho lớp học thử is Thử nghiệm()Nếu bạn không cung cấp, trình biên dịch sẽ tự động tạo ra nó và khởi tạo các biến với giá trị mặc định.
Tuy nhiên, nếu bạn chỉ định một hàm tạo có tham số như Demo(int a) và muốn sử dụng mặc định Thử nghiệm()Việc khai báo rõ ràng điều này là bắt buộc.
Bước 5) Bỏ dấu chú thích ở các dòng 4-8 của mã, sau đó lưu, biên dịch và chạy lại chương trình để quan sát sự thay đổi về hành vi.
Chuỗi hàm tạo trong Java
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 hàm tạo.
Ví dụ: Để hiểu về chuỗi hàm tạo với quá tải hàm tạo trong Java
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 đoạn mã. Do cơ chế chuỗi hàm tạo, khi đối tượng của lớp con được tạo, DemoChild được tạo, hàm tạo Thử nghiệm() của lớp cha được gọi trước và hàm tạo DemoChild() Đứa trẻ tiếp theo sẽ chạy.
Đầ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ể nhận thấy rằng hàm tạo của cha Thử nghiệm() Chạy theo mặc định. Để gọi hàm tạo quá tải. Demo(int a) Thay vào đó, hãy sử dụng từ khóa "siêu".
Cú pháp:
super(); --or-- super(parameter list);
Ví dụ: Nếu hàm tạo của lớp cha của bạn giống như Demo(String Name, int a), bạn sẽ chỉ định siêu(“Java”,5). Nếu được sử dụng, từ khóa siêu Đây phải là dòng mã đầu tiên trong hàm tạo của lớp con.
Bước 4) Bỏ dấu chú thích ở dòng 26 và chạy mã. Quan sát kết quả.
Đầu ra:
Inside 2nd Parent Constructor Inside the Constructor of Child Value1 === 5 Value2 === 0 Value1 === 3 Value2 === 4

