Là khai báo một biến là private static varName;
bất kỳ khác với khai báo một biến private varName;
?
Vâng, cả hai đều khác nhau. Và cái đầu tiên được gọi class variable
bởi vì nó giữ giá trị duy nhất cho điều đó class
trong khi cái còn lại được gọi instance variable
bởi vì nó có thể giữ giá trị khác nhau cho khác nhau instances(Objects)
. Cái đầu tiên chỉ được tạo một lần trong jvm và cái khác được tạo một lần cho mỗi thể hiện, tức là nếu bạn có 10 thể hiện thì bạn sẽ có 10 cái khác nhau private varName;
trong jvm.
Có khai báo biến như static
cho nó các thuộc tính đặc biệt khác không?
Có, các biến tĩnh nhận được một số thuộc tính khác với các biến thể hiện bình thường. Tôi đã đề cập vài cái rồi và chúng ta hãy xem một số ở đây: class variables
(các biến thể hiện được khai báo là tĩnh) có thể được truy cập trực tiếp bằng cách sử dụng tên lớp như thế nào ClassName.varName
. Và bất kỳ đối tượng nào của lớp đó đều có thể truy cập và sửa đổi giá trị của nó không giống như các biến thể hiện chỉ được truy cập bởi các đối tượng tương ứng. Các biến lớp có thể được sử dụng trong các phương thức tĩnh.
Việc sử dụng một private static variable
trong Java là gì?
Về mặt logic, private static variable
không khác gì so với public static variable
cái đầu tiên giúp bạn kiểm soát nhiều hơn. IMO, bạn có thể thay thế public static variable
theo nghĩa đen bằng private static variable
sự trợ giúp của các public static
phương thức getter và setter.
Một lĩnh vực được sử dụng rộng rãi private static variable
là triển khai Singleton
mẫu đơn giản trong đó bạn sẽ chỉ có một thể hiện duy nhất của lớp đó trên toàn thế giới. Ở đây static
định danh đóng vai trò quan trọng để làm cho cá thể đó có thể truy cập được bởi thế giới bên ngoài (Tất nhiên phương thức getter tĩnh công khai cũng đóng vai trò chính).
public class Singleton {
private static Singleton singletonInstance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return Singleton.singletonInstance;
}
}