Instance Initializer Block trong Java

0
96

Instance Initializer Block được sử dụng để khởi tạo thành viên dữ liệu instance. Nó chạy mỗi khi đối tượng của lớp được tạo. Sự khởi tạo của biến instance có thể là trực tiếp nhưng có thể là các hoạt động phụ được thực hiện trong khi khởi tạo biến instance trong Instance Initializer Block.

Câu hỏi: Sự sử dụng của Instance Initializer Block là gì trong khi chúng ta có thể trực tiếp gán một giá trị trong thành viên dữ liệu instance? Ví dụ:

Tại sao sử dụng Instance Initializer Block?

Giả sử bạn phải thực hiện một số hoạt động trong khi gán giá trị tới thành viên dữ liệu instance, ví dụ như cho vòng lặp để điền vào một mảng phức hợp hoặc xử lý lỗi, …

Bạn theo dõi ví dụ đơn giản sau về Instance Initializer Block mà thực hiện việc khởi tạo:

Instance Initializer Block hay Constructor được triệu hồi trước nhất?

Trong ví dụ trên, có vẻ như là Instance Initializer Block được triệu hồi đầu tiên, nhưng KHÔNG. Instance Initializer Block được triệu hồi tại thời điểm tạo đối tượng. Java Compiler sao chép Instance Initializer Block trong Constructor sau lệnh super() đầu tiên. Vì thế được triệu hồi đầu tiên là Constructor.

Ghi chú: Java Compiler sao chép code của Instance Initializer Block trong mỗi constructor.

Một số qui tắc cho Instance Initializer Block

Dưới đây là một số qui tắc chính cho Instance Initializer Block:

  • Được tạo khi instance của lớp được tạo.
  • Được triệu hồi sau khi constructor của lớp cha được triệu hồi (ví dụ: sau lời gọi super() constructor).
  • Được triệu hồi sau khi constructor của lớp cha được triệu hồi (ví dụ: sau lời gọi super() constructor).

Ví dụ chương trình mà Instance Initializer Block được triệu hồi sau super()

Ví dụ khác

Chương trình Java trên sẽ cho kết quả

Gửi phản hồi

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.