公有静态变量和私有静态变量的区别

问题描述 投票:0回答:6
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程序包含一个静态变量。但我无法理解公共静态变量和私有静态变量之间的区别。

java variables static private public
6个回答
31
投票
  • public
    变量可以从任何地方访问(好吧,任何可以访问类的地方)。

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

  • A

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

  • 注意变量

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


28
投票

公共变量可以在代码中的任何地方访问 - 私有变量只能在类本身内访问。在本例中,您在

Employee.salary
类中使用
Employee
,所以没问题。

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

还有其他级别的访问权限 -

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

(顺便说一句,还值得了解

static
的含义 - 您几乎肯定 希望这些变量是静态的,因为它们适用于 each
Employee
而不是
Employee
概念一般来说,
DEPARTMENT
在这里也是一个常数,这很奇怪。)


3
投票
private static double salary

仅在班级内可用,并且可以通过以下方式访问:

salary or Employee.salary

同时

 public static final String DEPARTMENT

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

Employee.DEPARTMENT

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


1
投票

显然,你不能从类外部访问

private
静态变量,但你可以从任何地方访问
public
静态变量。


0
投票
Employee employee = new Employee();
System.out.println(Employee.DEPARTMENT);

static 中,只有一个 DEPARTMENT 实例传递给 Employee 的每个实例。 在非静态中,每个 Employee 实例都会有自己的 DEpARTMENT 实例。

如果 DEPARTMENT 是非静态的,即

public final String DEPARTMENT = Development

访问 DEPARTMENT 的唯一方法是

System.out.println(employee.DEPARTMENT);
© www.soinside.com 2019 - 2024. All rights reserved.