Hàm tạo trong Java là một khái niệm quan trọng trong khi lập trình. Hàm tạo là phương thức đặc biệt được sử dụng để khởi tạo các đối tượng. Trong bài viết này, chúng ta sẽ cùng tìm hiểu về các hàm tạo trong Java, kiểu của chúng và cách sử dụng cùng với sự trợ giúp của các ví dụ dẫn chứng.
Hàm tạo là gì?
Một hàm tạo trong Java tương tự như một phương thức được gọi khi một đối tượng của lớp được tạo. Nó có thể được sử dụng để đặt giá trị ban đầu cho các thuộc tính đối tượng. Không giống như các phương thức, một hàm tạo có cùng tên với tên của lớp và không có bất kỳ kiểu trả về nào.
Ví dụ:
1 2 3 4 5 |
class sinh_vien { sinh_vien() { // Đoạn mã } } |
Ở đây, sinh_vien () là một hàm tạo và nó có cùng tên với lớp và không có kiểu trả về.
Ví dụ:
1 2 3 4 5 6 7 8 9 |
class Main { private int a; Main() { System.out.println("Doi tuong da duoc tao!\n"); } public static void main(String[] args) { Main b = new Main(); } } |
Kết quả:
1 |
Doi tuong da duoc tao! |
Trong ví dụ trên, chúng ta đã tạo một phương thức khởi tạo tên là Main (). Bên trong hàm tạo, chúng ta in ra một chuỗi ký tự. Chú ý với câu lệnh tạo một đối tượng của lớp Main.
1 |
Main b = new Main(); |
Ở đây, khi đối tượng được tạo, phương thức khởi tạo Main() sẽ được gọi. Và chuỗi ký tự sẽ được in ra.
Các loại hàm tạo
Trong Java, các hàm tạo có thể được chia thành 3 loại:
- Hàm tạo không tham số
- Hàm tạo có tham số
- Hàm tạo mặc định
1. Hàm tạo không tham số
Tương tự như các phương thức, một hàm tạo có thể có hoặc không có bất kỳ tham số (đối số) nào. Nếu một hàm tạo không chấp nhận bất kỳ tham số nào, nó được gọi là một hàm tạo không đối số.
Ví dụ:
1 2 3 4 5 6 7 8 9 |
class Main { private int a; private Main() { System.out.println("Doi tuong da duoc tao!\n"); } public static void main(String[] args) { Main b = new Main(); } } |
Trong ví dụ trên, chúng ta đã tạo một phương thức khởi tạo Main(). Ở đây, hàm tạo không chấp nhận bất kỳ tham số nào. Do đó, nó được biết đến như một hàm tạo không đối số.
Khi một hàm tạo được khai báo là private, nó không thể được truy cập từ bên ngoài lớp. Vì vậy, việc tạo các đối tượng từ bên ngoài lớp sẽ bị cấm sử dụng phương thức khởi tạo hay hàm tạo. Ở đây, chúng ta đang tạo đối tượng bên trong cùng một lớp. Do đó, chương trình có thể truy cập hàm tạo. Tuy nhiên, nếu chúng ta muốn tạo các đối tượng bên ngoài lớp, thì chúng ta cần phải khai báo hàm tạo là public.
2. Hàm tạo có tham số
Một hàm tạo trong Java cũng có thể chấp nhận một hoặc nhiều tham số. Các hàm tạo như vậy được gọi là các hàm tạo được tham số hóa, hay gòi là hàm tạo có tham số.
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 |
class Main { private int a; Main(int c) { System.out.println("Doi tuong da duoc tao!\n"); a = c; System.out.println(a); } public static void main(String[] args) { Main b = new Main(3); } } |
Kết quả:
1 2 3 |
Doi tuong da duoc tao! 3 |
Trong ví dụ trên, chúng ta đã tạo một phương thức khởi tạo tên là Main(). Ở đây, hàm tạo nhận một tham số duy nhất có kiểu dữ liệu là int, do vậy sẽ chỉ chấp nhận tham số kiểu số nguyên.
3. Hàm tạo mặc định
Nếu chúng ta không tạo bất kỳ hàm tạo nào, trình biên dịch Java sẽ tự động tạo một hàm tạo không có tham số trong quá trình thực thi chương trình. Hàm tạo này được gọi là hàm tạo mặc định.
Ví dụ:
1 2 3 4 5 6 7 |
class Main { int a; public static void main(String[] args) { Main b = new Main(); System.out.println(b.a); } } |
Kết quả:
1 |
Ở đây, chúng ta không tạo bất kỳ hàm tạo nào. Do đó, trình biên dịch Java tự động tạo phương thức khởi tạo một cách mặc định.
Hàm tạo mặc định sẽ khởi tạo bất kỳ đối tượng nào chưa khởi tạo với các giá trị mặc định.
Kiểu dữ liệu | Giá trị mặc định |
boolean | False |
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
char | \u0000 |
float | 0.0f |
double | 0.0d |
object | Tham chiếu Null |
Trong chương trình ở ví dụ bên trên, biến a được khởi tạo với giá trị mặc định là 0 vì nó có kiểu dữ liệu là int.
Các chú ý quan trọng cần lưu ý về hàm tạo
1. Các hàm tạo sẽ được gọi ngầm định khi ta khởi tạo các đối tượng.
2. Hai quy tắc để tạo một hàm tạo là:
- Tên của hàm tạo phải giống với lớp.
- Một hàm tạo Java không được có kiểu trả về.
3. Nếu một lớp không có hàm tạo, trình biên dịch Java sẽ tự động tạo một hàm tạo mặc định trong thời gian chạy. Hàm tạo mặc định khởi tạo các biến của đối tượng với các giá trị mặc định. Ví dụ, biến int sẽ được khởi tạo giá trị là 0.
4. Các loại hàm tạo:
- Hàm tạo không có tham số – một hàm tạo không chấp nhận bất kỳ đối số nào
- Hàm tạo được tham số hóa – một hàm tạo chấp nhận các đối số
- Hàm tạo mặc định – một hàm tạo được tự động tạo bởi trình biên dịch Java nếu nó không được định nghĩa bởi người lập trình.
- Một hàm tạo không thể được khai báo là abstract, static hoặc final.
- Một hàm tạo có thể được nạp chồng nhưng không thể được ghi đè.
Nạp chồng hàm tạo trong Java
Tương tự như nạp chồng phương thức trong Java, chúng ta cũng có thể tạo hai hoặc nhiều hàm tạo với các tham số khác nhau. Điều này được gọi là nạp chồng hàm tạo.
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Main { int a; Main() { a = 1; } Main(int b) { a = b; } public static void main(String[] args) { Main doi_tuong1 = new Main(); Main doi_tuong2 = new Main(3); System.out.println("Gia tri cua doi tuong 1 la: " + doi_tuong1.a); System.out.println("Gia tri cua doi tuong 2 la: " + doi_tuong2.a); } } |
Kết quả:
1 2 |
Gia tri cua doi tuong 1 la: 1 Gia tri cua doi tuong 2 la: 3 |
Trong ví dụ trên, chúng ta có hai hàm tạo: Main () và Main (int b). Dựa trên tham số được truyền trong quá trình tạo đối tượng, các hàm tạo khác nhau được gọi tương ứng.
Trên đây là khái niệm và ví dụ cơ bản về hàm tạo trong Java. Hy vọng mọi người có thể áp dụng vào trong chương trình của mình. Mọi người hãy tiếp tục theo dõi các bài tiếp theo và cập nhật các bài mới nhất trên tek4 nhé!
P/s: Cảm ơn mọi người!