[英]Difference between public static and private static variables
class Employee{
// salary variable is a private static variable
private static double salary;
// DEPARTMENT is a constant
public static final String DEPARTMENT = "Development";
public static void main(String args[]){
salary = 1000;
System.out.println(DEPARTMENT+ " average salary:"+salary);
}
}
這個java程序包含一個靜態變量。 但我無法理解公共和私有靜態變量之間的區別。
public
變量可以從任何地方訪問(以及可以訪問類的任何地方)。
private
變量只能在類中訪問。
static
變量屬於類而不是類的實例。
請注意,變量DEPARTMENT
也是final
,這意味着一旦設置它就無法修改。 這在這里很重要,因為這就是保存這個不好代碼的原因 - 變量是一個常量,因此可以在類外部提供對它的訪問權限。
公共變量可在代碼中的任何位置訪問 - 私有變量只能在類本身中訪問。 在這種情況下,您在Employee
類中使用Employee.salary
,所以沒關系。
請注意,變量是靜態的是一個完全獨立的問題 - 方法和類的可訪問性與變量的方式相同。
還有其他級別的訪問權限 - protected
和默認的“包”訪問(無法明確指定)。 有關更多詳細信息,請參見Java語言規范的第6.6節 。
(另一方面,它也值得了解static
意味着什么 - 你幾乎肯定不希望這些變量成為靜態,因為它們適用於每個 Employee
而不是一般的Employee
概念DEPARTMENT
是一個常數很奇怪這里也。)
private static double salary
僅在課程內可用,可以訪問
salary or Employee.salary
而
public static final String DEPARTMENT
也可以從這個類的外部訪問如下
Employee.DEPARTMENT
public static
- 可以在類中以及類外部訪問。
private static
- 只能從類中訪問。
靜態被認為是OOPS中的反OO。
class Dog
{
public static string X;
private static string y;
}
y
只能從內部訪問Dog
通過兩種Dog.y
或只是y
。 可以通過Dog.X
在任何地方訪問X
或者,如果您在課堂上或using static Dog
作為標題,則只需X
顯然,您無法從類外部訪問private
靜態變量,並且您可以從任何位置訪問public
靜態變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.