Các Loại Hàm Khởi Tạo (constructor) Của Lớp Trong Java - Góc Học IT

1. Hàm khởi tạo (constructor) là gì?

Hàm khởi tạo (constructor) trong Java là một hàm có tên giống với tên lớp. Hàm này được gọi khi khởi tạo đối tượng. Hàm khởi tạo không có kiểu trả về. Ví dụ:class Test { Test() { // constructor body } }

Một ví dụ khác về hàm khởi tạo.class Main { private String name; //constructor Main() { System.out.println("Constructor Called:"); name = "Gochocit.com"; } public static void main(String[] args) { //hàm khởi tạo được gọi khi khởi tạo đối tượng Main obj = new Main(); System.out.println("The name is " + obj.name); } }

Kết quả
Constructor Called: The name is Gochocit.com

Lớp Main có một hàm khởi tạo là Main(). Hàm này khởi tạo giá trị cho thuộc tính name. Khởi tạo đối tượng với hàm khởi tạo:Main obj = new Main();

Khi đó, đối tượng sẽ được phát vùng nhớ trên bộ nhớ heap để lưu trữ dữ liệu của đối tượng đó.

Trong Java, hàm khởi tạo có thể được chia thành 3 loại:

1. Hàm khởi tạo không có tham số (no-argument constructor)

2. Hàm khởi tạo có tham số (parameterized constructor)

3. Hàm khởi tạo mặc định (default constructor)

2. Hàm khởi tạo không có tham số (no-argument constructor)

Hàm khởi tạo của một lớp có thể không có tham số nào. Cú pháp:class <Tênlớp>{ accessmodifier <Tênlớp>(){ //thân hàm khởi tạo không có tham số } }

Nếu accessmodifier private thì hàm khởi tạo chỉ được sử dụng bên trong lớp đó. Nếu accessmodifier public thì hàm khởi tạo có thể được sử dụng bên ngoài lớp đó.

Ví dụ hàm khởi tạo với accessmodifier là private

class Main { private String name; //private constructor private Main() { System.out.println("Constructor Called:"); name = "Gochocit.com"; } public static void main(String[] args) { //hàm khởi tạo được gọi khi khởi tạo đối tượng Main obj = new Main(); System.out.println("The name is " + obj.name); } }

Ví dụ hàm khởi tạo với accessmodifier là public

class Company { String name; //public constructor public Company() { name = "Gochocit.com"; } } class Main { public static void main(String[] args) { // object is created in another class Company obj = new Company(); System.out.println("Company name = " + obj.name); } }

3. Hàm khởi tạo có tham số (parameterized constructor)

Hàm khởi tạo trong Java có thể có 1 hoặc nhiều tham số.class Company { String name; //public constructor public Company(String cName) { name = cName; System.out.println("Company name is " + name); } } class Main { public static void main(String[] args) { Company com1 = new Company("Google"); Company com2 = new Company("Apple"); Company com3 = new Company("Facebook"); } }

Kết quả
Company name is Google Company name is Apple Company name is Facebook

Hàm khởi tạo Company(String cName) có 1 tham số.

Nạp chồng hàm khởi tạo (constructor overloading)

Trong một lớp, có thể có nhiều hàm khởi tạo cùng tên nhưng khác tham số. Ta gọi đó là nạp chồng hàm khởi tạo (constructor overloading).class Company { String name; String country; public Company(){ name = "Google"; System.out.println("Company name is " + name); } //public constructor public Company(String cName) { name = cName; System.out.println("Company name is " + name); } //public constructor public Company(String cName, String cCountry) { name = cName; country = cCountry; System.out.println("Company name is " + name + " in " + country); } } class Main { public static void main(String[] args) { Company com1 = new Company(); Company com2 = new Company("Apple"); Company com3 = new Company("Facebook", "USA"); } }

Kết quả
Company name is Google Company name is Apple Company name is Facebook in USA

Có các hàm khởi tạo Company(), Company(String cName), Company(String cName, String cCountry) cùng tên với nhau nhưng khác tham số.

4. Hàm khởi tạo mặc định (default constructor)

Nếu trong lớp không có hàm khởi tạo này, trình biên dịch Java sẽ tự động tạo ra một hàm khởi tạo không có tham số. Hàm khởi tạo này gọi là hàm khởi tạo mặc định (default constructor).class Main { int a; boolean b; public static void main(String[] args) { // A default constructor is called Main obj = new Main(); System.out.println("Default Value:"); System.out.println("a = " + obj.a); System.out.println("b = " + obj.b); } }

Kết quả
Default Value: a = 0 b = false

Trong ví dụ trên, lớp Main không có hàm khởi tạo nào được định nghĩa. Trình biên dịch Java sẽ tự động tạo ra hàm default constructor. Hàm này sẽ tự động khởi tạo các thuộc tính với các giá trị mặc định.

Kiểu dữ liệuGiá trị mặc định
booleanfalse
byte0
short0
int0
long0L
char\u0000
float0.0f
double0.0d
objectTham chiếu đến null

5. Một vài tóm tắt về hàm khởi tạo (constructor)

Hàm khởi tạo được gọi khi khởi tạo đối tượng của lớp. Hàm khởi tạo có 2 đặc điểm là:

    • Tên của hàm khởi tạo cùng tên với tên của lớp
    • Hàm khởi tạo trong Java không có kiểu trả về (kể cả void)

Nếu một lớp không có hàm khởi tạo, trình biên dịch Java sẽ tự động tạo ra một hàm khởi tạo mặc định không có tham số. Hàm khởi tạo mặc định này sẽ tự khởi tạo các thuộc tính của đối tượng với các giá trị mặc định.

Có thể chia hàm khởi tạo thành 3 loại:

1. Hàm khởi tạo không có tham số (no-argument constructor)

2. Hàm khởi tạo có tham số (parameterized constructor)

3. Hàm khởi tạo mặc định (default constructor)

Hàm khởi tạo không thể khai báo với từ khóa abstract, static hoặc final.

Hàm khởi tạo có thể được nạp chồng nhưng không thể được ghi đè trong lớp con khi kế thừa.

  • Đối tượng (object) và cách sử dụng đối tượng trong Java
  • Kiểm tra dữ liệu đầu vào (user input) trong C++
  • Session là gì? Sử dụng session trong PHP
  • Chuyển đổi (convert) dữ liệu XML sang dữ liệu JSON trong Python
  • Xóa (delete) dữ liệu trong MySQL với PHP
5/5 - (1 bình chọn)Bài trước và bài sau trong môn học<< Các thành viên hằng (final) và tĩnh (static) của lớp trong JavaXây dựng lớp trong Java với nạp chồng (overloading) và kết tập (aggregation) >>

Từ khóa » Hàm Khởi Tạo Constructor