Static
Khi bạn khai báo một biến, một phương thức với static thì khi hoạt động nó thuộc về lớp chứ không phải thuộc về đối tượng tạo ra từ lớp
Điều này có nghĩa chỉ có một phiên bản thực mà thành viên khai báo là static tồn tại, thậm chí cả khi bạn tạo ra nhiều đối tượng từ lớp hay không tạo ra đối tượng nào. Thành viên static được chia sẻ chung cho các đối tượng
Ví dụ có lớp Counter như sau
public class Counter { public static int COUNT=0; Counter() { COUNT++; } }
Khi ứng dụng như sau
public class MyClass { public static void main(String[ ] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); System.out.println(Counter.COUNT); } } //Outputs "2"
Xuất ra là “2”, bởi vì biến COUNT là static, nó tăng 1 mỗi khi có một đối tượng kiểu Counter tạo ra. Ta đã tạo ra hai đối tượng ở ví dụ trên. Bạn cũng có thể truy cập đến biến tĩnh này thông của đối tượng, thông qua tên lớp, như Counter.COUNT, c1.COUNT hoặc c2.COUNT là một
Với hàm tính static có ý nghĩa tương tự, ví dụ:
public class Vehicle { public static void horn() { System.out.println("Beep"); } }
Khi ứng dụng như sau
public class MyClass { public static void main(String[ ] args) { Vehicle.horn(); } }
Ví dụ khác về các phương thức static (tính) là các phương thức thuộc lớp Math, các hàm về toán học được sử dụng mà không cần phải tạo ra một đối tượng lớp Math, lớp này ở bài tiếp theo
Phương thức main() điểm mồi chạy chương trình luôn là static
final
Từ khóa final được dùng để tạo hằng số, có nghĩa là nó được gán một lần duy nhất.
Ví dụ:
class MyClass { public static final double PI = 3.14; public static void main(String[ ] args) { System.out.println(PI); } }
MyClass.PI giờ sẽ là hằng số, nó đã được gán 1 lần giá trị 3.14, từ sau đó chỉ có thể lấy giá trị, mọi thao tác cố gắng gán giá trị khác vào PI sẽ gây lỗi