Constructor (hàm tạo) trong Java là một phương thức đặc biệt được sử dụng để khởi tạo đối tượng của lớp. Mỗi khi một đối tượng được tạo, constructor sẽ tự động được gọi.
Đặc điểm chính:
- Tên constructor trùng với tên lớp.
- Không có kiểu trả về (void cũng không được phép).
- Được sử dụng để gán giá trị ban đầu cho các biến thành viên hoặc thực hiện các thao tác khởi tạo.
Danh mục bài viết
Toggle1. Tại sao cần Constructor?
Constructor giúp:
- Khởi tạo giá trị ban đầu cho đối tượng.
- Đảm bảo tính nhất quán khi tạo đối tượng.
- Tự động hóa việc gán giá trị mà không cần gọi phương thức riêng lẻ.
2. Các loại Constructor trong Java
a. Constructor mặc định (Default Constructor)
- Java tự động tạo một constructor mặc định nếu không có constructor nào được định nghĩa trong lớp.
- Nó không có tham số và không thực hiện bất kỳ hành động nào khác ngoài việc tạo đối tượng.
class Student {
int id;
String name;
// Constructor mặc định
Student() {
System.out.println("Default constructor được gọi");
}
}
b. Constructor không tham số
- Là constructor do lập trình viên tự định nghĩa mà không có tham số.
- Dùng để thực hiện các hành động khởi tạo cụ thể.
class Car {
String brand;
// Constructor không tham số
Car() {
brand = "Toyota";
System.out.println("Car brand: " + brand);
}
}
c. Constructor có tham số
- Được sử dụng khi cần khởi tạo đối tượng với các giá trị cụ thể.
- Constructor này nhận tham số và gán giá trị cho các biến thành viên.
public class MyClass {
private int number;
private String text;
// Constructor
public MyClass(int num, String txt) {
this.number = num;
this.text = txt;
}
// Getters
public int getNumber() {
return number;
}
public String getText() {
return text;
}
}
3. Ví dụ minh họa
Ví dụ 1: Constructor mặc định
class Animal {
Animal() {
System.out.println("Default constructor của Animal");
}
public static void main(String[] args) {
Animal animal = new Animal();
}
}
Ví dụ 2: Constructor có tham số
class Person {
String name;
int age;
Person(String personName, int personAge) {
name = personName;
age = personAge;
}
void displayInfo() {
System.out.println("Name: " + name + ", Age: " + age);
}
public static void main(String[] args) {
Person person = new Person("John", 25);
person.displayInfo();
}
}
Ví dụ 3: Gọi constructor trong constructor khác (Constructor chaining)
class Product {
String name;
double price;
// Constructor 1
Product() {
this("Unknown Product", 0.0); // Gọi Constructor 2
}
// Constructor 2
Product(String productName, double productPrice) {
name = productName;
price = productPrice;
}
void display() {
System.out.println("Product: " + name + ", Price: $" + price);
}
public static void main(String[] args) {
Product defaultProduct = new Product();
defaultProduct.display();
Product specificProduct = new Product("Laptop", 1500.0);
specificProduct.display();
}
}
4. Khác biệt giữa Constructor và phương thức
Tiêu chí | Constructor | Phương thức |
---|---|---|
Tên | Trùng với tên lớp | Bất kỳ tên nào. |
Kiểu trả về | Không có (void cũng không được sử dụng). | Có thể có kiểu trả về hoặc không. |
Tự động gọi | Được gọi tự động khi tạo đối tượng. | Phải được gọi thủ công. |
Mục đích | Khởi tạo đối tượng và gán giá trị ban đầu. | Thực hiện các hành động hoặc logic cụ thể. |
Tổng kết
Constructor đóng vai trò quan trọng trong việc khởi tạo đối tượng và tối ưu hóa mã nguồn trong Java. Người lập trình cần hiểu rõ các loại constructor và cách sử dụng để viết mã ngắn gọn, hiệu quả hơn.
Tham khảo thêm: