Khóa học java

Phương thức khởi tạo (Constructor) trong Java là gì?

0 phút đọc

Phương thức tạo dựng (constructor) trong java là một phương thức của lớp (nhưng khá đặc biệt) thường được sử dụng để khởi tạo các đối tượng. Thông thường người ta thường sử dụng hàm tạo để khởi gán giá trị cho các thuộc tính của đối tượng và có thể thực hiện một số công việc cần thiết khác nhằm chuẩn bị cho đối tượng mới.

image

Đặc điểm của constructor

  • Hàm tạo có tên trùng với tên của lớp
  • Hàm tạo không bao giờ trả về kết quả
  • Nó được java gọi tự động khi một đối tượng của lớp được tạo ra
  • Hàm tạo có thể có đối số như các phương thức thông thường khác
  • Trong một lớp có thể có nhiều hàm tạo

Có 2 kiểu của constructor

  • Constructor mặc định (không có tham số truyền vào)
  • Constructor tham số
image

Constructor mặc định trong java

Khi xây dựng một lớp mà không xây dựng hàm tạo thế thì java sẽ cung cấp cho ta một hàm tạo không đối mặc định, hàm tạo này thực chất không làm gì cả, nếu trong lớp đã có ít nhất một hàm tạo thì hàm tạo mặc định sẽ không được tạo ra, khi ta tạo ra một đối tượng thì sẽ có một hàm tạo nào đó được gọi, nếu trình biên dịch không tìm thấy hàm tạo tương ứng nó sẽ thông báo lỗi, điều này thường xẩy ra khi chúng ta không xây dựng hàm tạo không đối nhưng khi tạo dựng đối tượng ta lại không truyền vào tham số, như được chỉ ra trong ví dụ sau:

java Copy
class Student {

    Student() { // Đây là constructor mặc định
        System.out.println("Đang tạo student");
    }
}

public class SimpleConstructor {

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            new Student(); // gọi constructor
        }
    }
}

Kết quả

Đang tạo student

Đang tạo student
Đang tạo student
Đang tạo student
Đang tạo student
Đang tạo student
Đang tạo student
Đang tạo student
Đang tạo student
Đang tạo student

Có thể bạn chưa biếtNếu không có constructor trong một lớp, trình biên dịch sẽ tự động tạo một constructor mặc định trong lớp đó.

Constructor có tham số trong java

Một constructor có tham số truyền vào được gọi là constructor tham số. Constructor tham số được sử dụng để cung cấp các giá trị khác nhau cho các đối tượng khác nhau.

java Copy
public class Student {

    int id;
    String name;

    Student(int i, String n) {
        id = i;
        name = n;
    }

    void display() {
        System.out.println(id + " " + name);
    }

    public static void main(String args[]) {
        Student s1 = new Student(1, "Thaycacac");
        Student s2 = new Student(2, "HoaPN");
        s1.display();
        s2.display();
    }
}

Kết quả

1 Thaycacac
2 HoaPN

Constructor Overloading trong java

Constructor Overloading là một kỹ thuật trong Java. Bạn có thể tạo nhiều constructor trong cùng một lớp với danh sách tham số truyền vào khác nhau. Trình biên dịch phân biệt các constructor này thông qua số lượng và kiểu dữ liệu của các tham số truyền vào.

java Copy
class Student {
 int id;
 String name;
 int age;

 Student(int i, String n) {
  id = i;
  name = n;
 }

 Student(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[]) {
  Student s1 = new Student(1, "Thaycacac");
  Student s2 = new Student(2, "HoaPN", 25);
  s1.display();
  s2.display();
 }
}

Kết quả

1 Thaycacac 0
2 HoaPN 25

Sự khác nhau giữa constructor và phương thức trong java

Constructor Phương thức
Constructor được sử dụng để khởi tạo trạng thái của một đối tượng. Phương thức được sử dụng để thể hiện hành động của một đối tượng.
Constructor không có kiểu trả về. Phương thức có kiểu trả về.
Constructor được gọi ngầm. Phương thức được gọi tường minh.
Trình biên dịch Java tạo ra constructor mặc định nếu bạn không có constructor nào. Phương thức không được tạo ra bởi trình biên dịch Java.
Tên của constructor phải giống tên lớp. Tên phương thức có thể giống hoặc khác tên lớp.
Avatar
Được viết bởi

Admin Team

Gợi ý câu hỏi phỏng vấn

Không có dữ liệu

Không có dữ liệu

Gợi ý bài viết
Không có dữ liệu

Không có dữ liệu

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào