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

时间:2012-05-05 06:29:30

标签: java variables static private public

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

5 个答案:

答案 0 :(得分:26)

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

  • private变量只能在班级内访问。

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

  • 请注意,变量DEPARTMENT也是final,这意味着一旦设置它就无法修改。这在这里很重要,因为这样可以避免错误代码 - 变量是一个常量,因此可以在类之外提供对它的访问权。

答案 1 :(得分:25)

公共变量可以在代码中随处访问 - 私有变量只能在类本身中访问。在这种情况下,您在Employee.salary类中使用Employee,这样就可以了。

请注意,变量是静态的是一个完全独立的问题 - 方法和类的可访问性与变量相同。

还有其他级别的访问权限 - protected和默认的“包”访问权限(无法明确指定)。请参阅section 6.6 of the Java Language Specification for more details

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

答案 2 :(得分:3)

private static double salary

仅在课程中可用,可以作为

进行访问
salary or Employee.salary

虽然

 public static final String DEPARTMENT

也可以从这个课程的外部访问,如下所示

Employee.DEPARTMENT

答案 3 :(得分:3)

public static - 可以在课堂内以及课堂外访问。

private static - 只能从班级内访问。

静态被认为是OOPS中的反OO。

class Dog
{
    public static string X;
    private static string y;
}

y只能通过DogDog.yy内部访问。 可以通过X在任何地方访问Dog.X,或者,如果您在课堂上或使用using static Dog作为标题,则只需访问X

答案 4 :(得分:1)

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