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程序包含一个静态变量。但我无法理解公共和私有静态变量之间的区别。
答案 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
只能通过Dog
或Dog.y
从y
内部访问。
可以通过X
在任何地方访问Dog.X
,或者,如果您在课堂上或使用using static Dog
作为标题,则只需访问X
。
答案 4 :(得分:1)
显然,您无法从类外部访问private
静态变量,并且可以从任何地方访问public
静态变量。