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

4

5 回答 5

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

  • private变量只能在类内部访问。

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

  • 请注意,变量DEPARTMENT也是final,这意味着一旦设置它就不能修改。这在这里很重要,因为这可以避免它成为糟糕的代码——变量是一个常量,所以可以让类之外的东西访问它。

于 2012-05-05T06:36:33.070 回答
27

公共变量在代码中的任何地方都可以访问- 私有变量只能在类本身中访问。在这种情况下,您在课堂上使用Employee.salaryEmployee所以没关系。

请注意,静态变量是一个完全独立的问题——方法和类与变量一样具有可访问性。

还有其他可用的访问级别 -protected以及默认的“包”访问(无法明确指定)。有关详细信息,请参阅Java 语言规范的第 6.6 节

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

于 2012-05-05T06:32:14.933 回答
3
private static double salary

仅在类中可用,并且可以作为

salary or Employee.salary

尽管

 public static final String DEPARTMENT

也可以从此类外部访问,如下所示

Employee.DEPARTMENT
于 2012-05-05T06:38:48.927 回答
3

public static- 可以从班级内部和班级外部访问。

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

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

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

y只能Dog通过 anyDog.y或 just从内部访问yX可以通过任何地方访问,Dog.X或者,如果您在课堂上或using static Dog用作标题,只需X.

于 2015-04-22T12:34:32.070 回答
1

显然,你不能private从类外部访问静态变量,你可以public从任何地方访问静态变量。

于 2012-05-05T06:31:13.843 回答