公共静态和私有静态变量之间的区别

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程序包含一个静态变量。 但我无法理解公共和私有静态变量之间的区别。

公共变量可在代码中的任何位置访问 – 私有变量只能在类本身中访问。 在这种情况下,您在Employee类中使用Employee.salary ,所以没关系。

请注意,变量是静态的是完全独立的事物 – 方法和类的可访问性与变量相同。

还有其他级别的访问权限 – protected和默认的“包”访问(无法明确指定)。 有关更多详细信息,请参见Java语言规范的第6.6节 。

(作为一个附带问题,它也值得了解static意味着什么 – 你几乎肯定希望这些变量是静态的,因为它们适用于每个 Employee而不是一般的Employee概念DEPARTMENT是一个常数很奇怪这里也。)

  • public变量可以从任何地方访问(以及可以访问类的任何地方)。

  • private变量只能在类中访问。

  • static变量属于类而不是类的实例。

  • 请注意,变量DEPARTMENT也是final ,这意味着一旦设置它就无法修改。 这在这里很重要,因为这样可以避免代码变坏 – 变量是一个常量,因此可以在类外部对它进行访问。

 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.yy来从Dog内部访问。 可以通过Dog.X在任何地方访问X或者,如果您在课堂上或using static Dog作为标题,则只需X

显然,您无法从类外部访问private静态变量,并且您可以从任何位置访问public静态变量。