Có báo nhiều cách khởi tạo đối tượng trong java
Trong Java, Constructor (hay còn gọi là hàm tạo) là một khối mã tương tự như phương thức. Nó được gọi khi một thể hiện của class được tạo. Tại thời điểm gọi hàm tạo, bộ nhớ dành cho đối tượng được phân bổ. Show
Nó là một loại phương thức đặc biệt được sử dụng để khởi tạo đối tượng. Mỗi khi một đối tượng được tạo bằng cách sử dụng từ khóa new(), có ít nhất một hàm tạo được gọi. Nó gọi một hàm tạo mặc định (default constructor) nếu không có hàm tạo nào trong class. Trong trường hợp như vậy, trình biên dịch Java cung cấp một hàm tạo mặc định theo mặc định. Có hai loại hàm tạo trong Java:
Lưu ý: Nó được gọi là hàm tạo (constructor) vì nó xây dựng các giá trị tại thời điểm tạo đối tượng. Không cần thiết phải viết một constructor cho một class. Đó là bởi vì trình biên dịch java tạo ra một hàm tạo mặc định nếu class của bạn không có. 1. Quy tắc để tạo Hàm tạoCó 3 quy tắc để tạo ra một hàm tạo:
Lưu ý: Chúng ta có thể sử dụng các từ khóa sửa đổi truy cập (access modifier) trong khi khai báo một hàm tạo. Nó kiểm soát việc tạo đối tượng. Nói cách khác, chúng ta có thể có hàm tạo private, protected, public hoặc mặc định trong Java. 2. Các loại Hàm tạoCó 2 loại hàm tạo trong Java:
3. Hàm tạo mặc địnhHàm tạo được gọi là Hàm tạo mặc định (Default Constructor) khi nó không có bất kỳ tham số nào. 3.1. Cú pháp hàm tạo mặc định3.2. Ví dụ về hàm tạo mặc địnhTrong ví dụ này, chúng ta đang tạo hàm tạo không có đối số trong class Bike1. Nó sẽ được gọi vào thời điểm tạo đối tượng. //Java Program to create and call a default constructor class Bike1{ // Tạo hàm tạo mặc định Bike1(){ System.out.println("Bike1 được tạo"); } //main method public static void main(String args[]){ // Gọi hàm tạo mặc định Bike1 b = new Bike1(); } }Kết quả: Bike1 được tạoLưu ý: Nếu không có hàm tạo nào được tạo trong một class, trình biên dịch sẽ tự động tạo một hàm tạo mặc định. 3.3. Ví dụ về hàm tạo mặc định hiển thị giá trị mặc định// Hãy thử một ví dụ hàm tạo khác // để tạo hiển thị giá trị mặc định class Student3{ int id; String name; // Phương thức hiển thị id và name void display(){ System.out.println(id+" "+name); } public static void main(String args[]){ // Tạo đối tượng Student3 s1=new Student3(); Student3 s2=new Student3(); // Hiển thị giá trị của đối tượng s1.display(); s2.display(); } }Kết quả: 0 null 0 nullGiải thích: Trong class Student3 trên, bạn không tạo bất kỳ hàm tạo nào để trình biên dịch tự động cung cấp cho bạn một hàm tạo mặc định. Ở đây giá trị 0 và null được cung cấp bởi hàm tạo mặc định. 4. Hàm tham sốHàm tạo có số lượng tham số cụ thể được gọi là hàm tạo tham số. 4.1. Ví dụ về hàm tạo tham sốTrong ví dụ này, chúng tôi đã tạo ra hàm tạo của class Student có hai tham số. Chúng ta có thể có nhiều tham số. // Ví dụ về hàm tạo tham số trong Java. class Student4{ int id; String name; // Tạo một hàm tạo tham số Student4(int i, String n){ id = i; name = n; } // Phương thức hiển thị giá trị void display(){System.out.println(id+" "+name);} public static void main(String args[]){ // Tạo đối tượng và truyền giá trị Student4 s1 = new Student4(17,"Hải"); Student4 s2 = new Student4(18,"Doanh"); // Gọi phương thức hiển thị dữ liệu s1.display(); s2.display(); } }Kết quả: 5. Constructor Overloading trong JavaTrong Java, một hàm tạo giống như một phương thức nhưng không có kiểu trả về. Nó cũng có thể bị quá tải (overloading) như các phương thức trong Java. Constructor Overloading trong Java là một kỹ thuật có nhiều hơn một hàm tạo với các danh sách tham số khác nhau. Chúng được sắp xếp theo cách mà mỗi constructor hiện một nhiệm vụ khác nhau. Chúng được trình biên dịch phân biệt bởi số lượng tham số trong và kiểu tham số của chúng. 5.1. Ví dụ về Constructor Overloading trong Java// Chương trình ví dụ về Constructor Overloading trong Java class Student5{ int id; String name; int age; // Tạo hàm tạo với 2 tham số Student5(int i,String n){ id = i; name = n; } // Tạo hàm tạo với 3 tham số Student5(int i, String n, int a){ id = i; name = n; age = a; } void display(){ System.out.println(id+" "+name+" "+age); } public static void main(String args[]){ Student5 s1 = new Student5(17,"Hải"); Student5 s2 = new Student5(18,"Doanh", 21); s1.display(); s2.display(); } }Kết quả 17 Hải 0 18 Doanh 216. Sự khác biệt giữa Constructor và Method trong JavaCó nhiều sự khác biệt giữa các constructor và method:
7. Copy Constructor trong JavaKhông copy được constructor trong Java. Tuy nhiên, chúng ta có thể sao chép các giá trị từ đối tượng này sang đối tượng khác như constructor trong C ++. Có nhiều cách để sao chép các giá trị của một đối tượng vào một đối tượng khác trong Java:
Trong ví dụ này, chúng ta sẽ sao chép các giá trị của một đối tượng sang đối tượng khác bằng cách sử dụng hàm tạo trong Java. Kết quả: 17 Hải 17 HảiHỏi #1: Mục đích của hàm tạo mặc định là gì? Trả lời: Hàm tạo mặc định được sử dụng để cung cấp các giá trị mặc định cho đối tượng như 0, null, v.v., tùy thuộc vào loại. Hỏi #2: Mục đích của hàm tạo tham số là gì? Trả lời: Hàm tạo tham số được sử dụng để cung cấp các giá trị khác nhau cho các đối tượng riêng biệt. Tuy nhiên, bạn cũng có thể cung cấp các giá trị tương tự. Hỏi #3: Liệu constructor có trả về giá trị nào không? Trả lời: Có, đó là thể hiện của lớp hiện tại (Bạn không thể sử dụng kiểu trả về nhưng nó trả về một giá trị). Hỏi #4: Constructor có thể thực hiện các nhiệm vụ khác thay vì khởi tạo? Trả lời: Có, giống như tạo đối tượng, bắt đầu một luồng, gọi một phương thức, v.v. Bạn có thể thực hiện bất kỳ thao tác nào trong hàm tạo khi bạn thực hiện trong phương thức. Hỏi #5: Có class Constructor trong Java không? Trả lời: Có Hỏi #6: Mục đích của class Constructor là gì? Trả lời: Java cung cấp một class Constructor có thể được sử dụng để lấy thông tin nội bộ của constructor trong class. Bạn sẽ thấy nó trong package java.lang.reflect. Lời kếtNhư vậy là trong bài này bạn đã được tìm hiểu khá đầy đủ về constructor (hàm tạo) trong Java. Và sau này, chúng ta sẽ thường xuyên sử dụng chúng trong lập trình. Tham khảo thêm:
Hãy lưu ý nhé. Chúc bạn học Java tốt! JavaDEV 4 Loại Access Modifiers trong JAVAJava cơ bản niithanoi - 18/01/2021 0 Access Modifiers trong Java chỉ định khả năng / cấp độ truy cập hoặc phạm vi của một field, method, constructor hoặc class. Có 4 loại: private, default, protected, public Read more Package trong JAVAJava cơ bản niithanoi - 18/01/2021 0 Package trong Java có thể được phân loại theo hai dạng, built-in package (có sẵn) và user-defined package (gói do người dùng định nghĩa) Read more Sự khác biệt giữa Abstract Class và InterfaceJava cơ bản niithanoi - 18/01/2021 0 Cả Abstract class và Interface đều được sử dụng để đạt được sự trừu tượng nơi chúng ta có thể khai báo các phương thức trừu tượng. Cả Abstract class và Interface đều không thể được khởi tạo. Read more Interface trong JAVATự học Java niithanoi - 07/12/2020 0 Interface trong Java là một cơ chế để đạt được sự trừu tượng. Có thể chỉ có các phương thức trừu tượng trong Interface, không có phần thân phương thức Read more |