Java: Bộ khởi tạo cho đối tượng

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Các bộ khởi tạo đối tượng trong Java cung cấp một cách tạo một đối tượng và khởi tạo các thuộc tính của nó. Với phương pháp tiếp cận thông thường, bạn gọi một hàm tạo để khởi tạo đối tượng, nhưng việc sử dụng bộ khởi tạo đối tượng bạn có thể bổ sung cho việc sử dụng hàm tạo.

Có hai cách khởi tạo các trường hay biến thể hiện của các đối tượng mới được tạo là: sử dụng Bộ khởi tạo biến thể hiện và sử dụng Khối khởi tạo.

1. Bộ khởi tạo thuộc tính

Trong phương pháp này, ta xác định các tên của các thuộc tính muốn được khởi tạo, và cung cấp giá trị khởi tạo cho từng thuộc tính đó.

Ví dụ sau cho thấy việc khai báo lớp có tên Person và khởi tạo cho các thuộc tính nameage của nó.

public class Person {
  private String name = "Hieu";
  private int age = 16;
  /**
   * Hiển thị các chi tiết về các thuộc tính của đối tượng lớp Person
   */
  void displayDetails() {
    System.out.println("Thông tin chi tiết");
    System.out.println("==============");
    System.out.println("Ten: " + name);
    System.out.println("Tuoi: " + age);
  }
}

Trong ví dụ trên, các biến thể hiện là name và age được khởi tạo các giá trị tương ứng là "Hieu" và 16. Việc khởi tạo các thuộc tính khai báo trong lớp không yêu cầu chúng khởi tạo trong một hàm tạo.

Ví dụ sau cung cấp lớp chứa hàm main() truy cập các đối tượng kiểu Person.

public class Person {
  private String name = "Hieu";
  private int age = 16;

  /**
   * Hiển thị các chi tiết về đối tượng Person
   */
  void displayDetails() {
    System.out.println("Thông tin chi tiết");
    System.out.println("==============");
    System.out.println("Ten: " + name);
    System.out.println("Tuoi: " + age);
  }
}

class TestPerson {
  public static void main(String[] args) {
    Person objPerson1 = new Person();
    objPerson1.displayDetails();
  }
}

Đoạn mã khai báo một đối tượng có kiểu Person và gọi phương thức để hiển thị các chi tiết.

Hình dưới đây thể hiện kết quả của đoạn mã 1 và đoạn mã 2 khi áp dụng bộ khởi tạo biến thể hiện:

java1-bo-khoi-tao-bien-the-hien

2. Khối khởi tạo

Với phương pháp này, một khối khởi tạo được tạo ra bên trong lớp. Khối khởi tạo được thực thi trước khi thực thi hàm tạo trong quá trình khởi tạo một đối tượng.

Ví dụ sau thể hiện lớp Account với một khối khởi tạo.

public class Account {
  private int accountID;
  private String holderName;
  private String accountType;
  /**
   * Khối khởi tạo là một cặp ngoặc {} và bên trong chứa các câu lệnh khởi tạo cho các biến thể hiện
   */
  {
    accountID = 100;
    holderName = "Nguyen Van Minh";
    accountType = "Tai khoan tiet kiem";
  }
  /* Hiển thị các chi tiết của đối tượng Account */
  public void displayAccountDetails() {
    System.out.println("Thông tin chi tiết");
    System.out.println("===============");
    System.out.println("Account ID: " + accountID + "\nAccount Type: " + accountType);
  }
}

Trong ví dụ trên, khối khởi tạo tiến hành khởi tạo các thuộc tính của lớp. Khối khởi tạo về cơ bản được sử dụng để giải quyết những chuỗi khởi tạo phức tạp.

Ví dụ sau có thêm lớp chứa phương thức main() để khởi tạo các thuộc tính cho đối tượng objAccount thông qua khối khởi tạo.

public class Account {
  private int accountID;
  private String holderName;
  private String accountType;
  /**
   * Khối khởi tạo là một cặp ngoặc {} và bên trong chứa các câu lệnh khởi tạo cho các biến thể hiện
   */
  {
    accountID = 100;
    holderName = "Nguyen Van Minh";
    accountType = "Tai khoan tiet kiem";
  }
  /**
   * Hiển thị các chi tiết của đối tượng Account
   */
  public void displayAccountDetails() {
    System.out.println("Thông tin chi tiết");
    System.out.println("===============");
    System.out.println("Account ID: " + accountID + "\nAccount Type: " + accountType);
  }
}

class TestInitializationBlock {
  public static void main(String[] args) {
    Account objAccount = new Account();
    objAccount.displayAccountDetails();
  }
}

Kết quả của đoạn mã 3 và 4 được thể hiện ở hình sau:

java1-khoi-khoi-tao

» Tiếp: Từ khóa this
« Trước: Hàm tạo (Constructor)
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!