簡體   English   中英

公共靜態和私有靜態變量之間的區別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM