Trong Java, những biến, phương thức được khai báo với từ khoá static thì sẽ thuộc về class, không thuộc về instance của class đó. Điều này có nghĩa, chúng ta không cần khởi tạo các đối tượng thì mới dùng được các biến, phương thức được khai báo với từ khoá static trong những class đó.
Ví như mình có class sau:
1 2 3 4 5 6 7 8 9 10 |
package com.huongdanjava.javaexample; public class Example { private static final String NAME = "Khanh"; public static void main(String[] args) { System.out.println(Example.NAME); } } |
Trong class Example trên, mình đã khai báo biến NAME là static. Khi đó, mình không cần khởi tạo đối tượng cho class Example nhưng mình vẫn in ra được giá trị của biến NAME.
Kết quả:
Đối với phương thức cũng vậy, giả sử mình định nghĩa một phương thức static trong class Example như sau:
1 2 3 4 5 6 7 8 9 10 11 12 |
package com.huongdanjava.javaexample; public class Example { private static int sum(int a, int b) { return a + b; } public static void main(String[] args) { System.out.println(Example.sum(2, 3)); } } |
Như các bạn thấy, mình không cần phải khởi tạo đối tượng Example mà cũng có thể gọi phương thức static sum().
Kết quả:
Các biến static chúng ta có thể khai báo trong những class bình thường, các abstract class hoặc interface class.
Nhưng đối với phương thức thì từ Java 7 trở về trước, chúng ta chỉ có thể khai báo phương thức static trong các class bình thường hoặc là abstract class. Nếu khai báo trong interface thì sẽ bị báo lỗi ngay.
Ví dụ:
Từ Java 8, Java đã cho phép chúng ta khai báo phương thức static trong interface class nhé các bạn!
Ví dụ:
Khi chạy các bạn cũng sẽ thấy kết quả như trên.