I, static keyword
static
keyword có thể được dùng với:- block: static block.
- variable: static variable.
- method: static method.
- nested class: static nested class.
- static member sẽ gắn với class của nó (không phải gắn với instance). Do đó, bạn có thể truy cập chúng mà không cần instance.
II, static block
- Khi
static variable
chưa được gán giá trị, bạn có thể gán giá trị của nó ở trongstatic block
. - Static block chỉ xử lý 1 lần khi class load lần đầu.
- Ví dụ 1
1 | class TestBlock { |
- kết quả là:
1 | Static block initialized. |
III, static variable
Static variable
gắn với class của nó (không phải là instance).- Điều này có nghĩa nếu bạn định nghĩa static variable, tất cả các instance của class dùng chung 1 static member (thay vì mỗi instance có 1 static member).
- Khi bạn thay đổi giá trị của static variable thì những lời gọi sau này tới static member đó cũng sẽ nhận được gía trị mới nhất đó.
IV, static method
Static method
được gọi mà không cần phải khỏi tạo object.- Nó giúp tối ưu hoá performance thường được sử dụng cho các util method.
- Nếu method của bạn không liên quan tới member variable của class thì nên sử dụng static method.
- Tuy nhiên, static method cũng có một số nhược điểm sau:
- 1, Chỉ có thể gọi static method khác.
- 2, Chỉ có gọi những static variable (class variable).
- 3, Không cho phép
this()
haysuper()
. Đây cũng là lý do class con không thực sự override static method của class cha.
- Ví dụ 2:
1 | class TestMethod { |
V, static nested class
- Bạn có thể tham khảo ở bài viết về nested class