Thứ tự thực thi các blocks, constructors trong Java

Trong Java, chúng ta có 2 loại blocks, đó là static blockinstance block, và có thể khai báo nhiều constructors khác nhau. Vậy thứ tự thực thi các blocks, constructors trong Java như thế nào? Trong bài viết này, chúng ta hãy cùng nhau tìm hiểu nhé các bạn!

Static block là một khối gồm nhiều dòng code, thuộc về một class cụ thể nào đó chứ không thuộc về instance của một class. Chúng ta định nghĩa nó nằm trong từ khóa static, ví dụ như sau:

Instance block cũng là một khối gồm nhiều dòng code, nhưng nó không thuộc về class mà thuộc về instance của class đó. Nó được thực thi mỗi khi instance của class được khởi tạo. Chúng ta định nghĩa nó như sau:

Còn constructor thì chắc hẳn mình không cần phải nói nữa. Ai học về Java mà không biết nó, các bạn nhỉ :D.

Vậy thứ tự thực thi của các blocks, constructors sẽ như thế nào? Hãy xem xét đoạn code sau nhé các bạn!

Kết quả:

Thứ tự thực thi các blocks, constructors trong Java

Rõ ràng, các bạn thấy, thứ tự thực thi của chúng sẽ như sau:

  • Đầu tiên là thực hiện những đoạn code trong static block trước.
  • Sau đó mới tới những đoạn code trong instance block.
  • Và code trong constructor sẽ thực hiện sau cùng.

Vậy trong trường hợp lớp có kế thừa như ví dụ sau thì sao nhỉ?

Kết quả:

Thứ tự thực thi các blocks, constructors trong Java

Trong trường hợp này, thứ tự thực thi sẽ ưu tiên cho lớp cha trước rồi mới đến lớp con. Nhưng nguyên tắc thì các khối code static vẫn thực thi trước tiên các bạn nhé!

Tóm lại là:

  • Static block sẽ chạy khi class được load vào JVM.
  • Instance block sẽ chạy mỗi khi instance mới của class được khởi tạo.
  • Instance block sẽ chạy sau khi super constructor đã chạy và trước khi constructor của class hiện tại được chạy.
3.7/5 - (10 bình chọn)

Add Comment