2012-05-05 31 views
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); 
} 
} 

Este programa Java contiene una variable estática. Pero no puedo entender la diferencia entre las variables estáticas públicas y privadas.Diferencia entre variables estáticas públicas y privadas estáticas

Respuesta

23

Una variable pública es accesible en todas partes en el código - una variable privada solo es accesible dentro de la clase. En este caso, está usando Employee.salary dentro de la clase Employee, así que está bien.

Tenga en cuenta que la variable es estática es un asunto completamente separado, y los métodos y las clases tienen accesibilidad de la misma manera que las variables.

También hay otros niveles de acceso disponibles: protected y el acceso predeterminado de "paquete" (que no se puede especificar explícitamente). Ver section 6.6 of the Java Language Specification for more details.

(Como cuestión lado, también es digno de aprender acerca de lo que significa static - es casi seguro que no desea que estas variables son estáticas, ya que se aplican a cadaEmployee en lugar del concepto Employee en general. es extraño para DEPARTMENT a ser una constante, también.)

+0

Entendido. Gracias TON :) –

+0

No creo que alguna vez necesitemos variables estáticas privadas – Sameer

+0

@Sameer: ​​I * completamente * en desacuerdo. Si bien, en general, no me gustan las variables estáticas, no afirmaría que sean * nunca * necesarias. ¿Son las únicas variables estáticas que alguna vez usa constantes? (Incluso las constantes pueden ser mejores como privadas, a veces ...) –

1

Obviamente, no puede acceder a la variable estática private desde fuera de la clase, y puede acceder a la variable estática public desde cualquier lugar.

+0

Echa un vistazo otra vez. El salario variable es privado. Pero si es privado, ¿cómo puede esta línea "public static void main (String args []) { salario = 1000;" ¿salario de acceso? –

+2

@Androidmaid: porque está accediendo desde dentro de la misma clase (empleado). –

+0

con la computadora/tecnología de hoy, una pequeña cantidad de memoria no hará ningún daño – BeyondProgrammer

25
  • una variable public es accesible desde cualquier lugar (bueno, en cualquier lugar donde la clase es accesible).

  • Una variable private solo es accesible dentro de la clase.

  • Una variable static pertenece a la clase en lugar de a una instancia de una clase.

  • Observe que la variable DEPARTMENT también es final, lo que significa que no se puede modificar una vez que se establezca. Esto es importante aquí porque eso es lo que evita que se convierta en código incorrecto: la variable es una constante, por lo que está bien que las cosas que están fuera de la clase accedan a ella.

+0

GREAT. Tengo una confusión en la final. –

3
private static double salary 

sólo está disponible dentro de la clase y se puede acceder como

salary or Employee.salary 

Mientras

public static final String DEPARTMENT 

se pudo tener acceso desde fuera de esta clase también de la siguiente

Employee.DEPARTMENT 
3

Público estático: se puede acceder desde la clase y fuera de la clase.

Privado estático: solo se puede acceder desde dentro de la clase.

Las estáticas se consideran anti-OO en OOPS.

por ejemplo: private static String x; solo se puede acceder dentro de la clase

public static String x; en clase Dog

se puede acceder desde cualquier lugar con Dog.x;

Happy Coding!