公共静态和私有静态变量之间的区别
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.y
或y
来从Dog
内部访问。 可以通过Dog.X
在任何地方访问X
或者,如果您在课堂上或using static Dog
作为标题,则只需X
显然,您无法从类外部访问private
静态变量,并且您可以从任何位置访问public
静态变量。