Nạp chồng khối lệnh trong Java: & Ví dụ về chương trình

Mục lục:

Anonim

Constructor trong Java là gì?

CONSTRUCTIONOR 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 cho đối tượng. Nó có thể được sử dụng để khởi tạo các đối tượng thành các giá trị mong muốn hoặc các giá trị mặc định tại thời điểm tạo đối tượng. Không bắt buộc người viết mã 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 thành các 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ự rỗng ('\ 0')
  • các biến tham chiếu được đặt thành null

Trong hướng dẫn này, bạn sẽ học-

  • Các quy tắc để tạo một Constructor
  • Nạp chồng khối lệnh trong Java
  • Chuỗi xây dựng

Các quy tắc tạo Java Constructor

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

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 khởi tạo sau vào trình soạn thảo Java.

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 và biên dịch chương trình khởi tạo trong Java và quan sát kết quả đầu ra.

Đầu ra:

Inside ConstructorValue1 === 10Value2 === 20

Nạp chồng khối lệnh trong Java

Nạp chồng hàm tạo trong Java 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 các 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 Tài khoản lớp là

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

Ví dụ 2 : Để hiểu Nạp chồng khối lệnh 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 tiếp tục bước tiếp theo của quá trình nạp chồng hàm tạo Java

Bước 4) Mỗi lớp đều có một Constructor mặc định trong Java. Phương thức khởi tạo được nạp chồng mặc định Java cho lớp DemoDemo () . 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 các giá trị mong muốn của bạn như được hiển thị trong Ví dụ 1.

Nhưng nếu bạn chỉ định một phương thức khởi tạo tham số như Demo (int a) và muốn sử dụng phương thức khởi 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 phương thức khởi tạo nạp chồng của bạn trong Java bị ghi đè và bạn muốn sử dụng phương thức khởi tạo mặc định Java, thì 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ã.

Chuỗi xây dựng

Hãy xem xét một kịch bản trong đó một lớp cơ sở được mở rộng bởi một lớp con. Bất cứ khi nào một đối tượng của lớp con được tạo, phương thức khởi tạo của lớp cha sẽ được gọi trước. Đây được gọi là Constructor chaining.

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

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

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 khởi 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 đầu tiên và hàm tạo sau đó DemoChild () của lớp con được tạo. Sản lượng mong đợi =

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

Bước 3) Bạn có thể 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 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 "super" để gọi các hàm tạo 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 super ("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 ConstructorInside the Constructor of ChildValue1 === 5Value2 === 0Value1 === 3Value2 === 4