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);
}
}
This java program contains a static variable. But I cannot understand the difference between public and private static variables.
is available only within the class and can be accessed as
While
Could be accessed from outside of this class too as follows
A public variable is accessible everywhere in the code - a private variable is only accessible within the class itself. In this case you're using
Employee.salary
within theEmployee
class, so that's fine.Note that the variable being static is a completely separate matter - and methods and classes have accessibility in the same way as variables.
There are other levels of access available too -
protected
and the default "package" access (which can't be specified explicitly). See section 6.6 of the Java Language Specification for more details.(As a side matter, it's also worth learning about what
static
means - you almost certainly don't want these variables to be statics, as they apply to eachEmployee
rather than theEmployee
concept in general. It's odd forDEPARTMENT
to be a constant here, too.)public static
- can be accessed from within the class as well as outside the class.private static
- can be access from within the class only.Static's are considered to be anti-OO in OOPS.
y
can be accessed only from insideDog
via eitherDog.y
or justy
.X
can be accessed anywhere viaDog.X
or, if you're either in the class or usingusing static Dog
as a header, justX
.A
public
variable is accessible from anywhere (well, anywhere where the class is accessible).A
private
variable is only accessible inside the class.A
static
variable belongs to the class rather than to an instance of a class.Notice that the variable
DEPARTMENT
is alsofinal
, which means that it cannot be modified once it is set. This is important here because that's what saves this from being bad code -- the variable is a constant so it's okay to give things outside the class access to it.Obviously, you cannot access
private
static variable from outside the class, and you can accesspublic
static variable from everywhere.