Métodos y campos estáticos

  • Los métodos estáticos no necesitan instanciar la clase. Se comparten a través de todos los usuarios de la clase. Son miembros de un objeto de clase que existen independientemente de cualquier instancia de esa clase.
  • El método main es un método estático, lo que quiere decir que se puede llamar mediante el nombre de la clase.
  • Los métodos estáticos tienen 2 propósitos principales:
    • Para utilidades o métodos auxiliares que no requieren ningún estado de objeto. Como no hay necesidad de acceder a variables de instancia, tener métodos estáticos elimina la necesidad de instanciar el objeto para llamar al método.
    • Para estados que se comparten por todas las instancias de una clase, como por ejemplo un contador. Todas las instancias comparten el mismo estado. Los métodos que usen ese estado, deberían ser estáticos también.
  • Para llamar a un método estático basta con poner el nombre de la clase antes del método o variable. Se puede llamar también usando una instancia del objeto para llamar a un método estático.
  • Un miembro estático no puede realizar llamadas a miembros de instancia.
    • public class Estatico {
      private String name = “Clase estatica”;
      public static void primero() {}
      public void segundo() { System.out.println(name); }
      public static void main(String args[]) {
      primero();
      segundo(); // Error de compilación
      }}
Tipo Llamando a ¿Es legal? ¿Cómo se hace?
Método estático otro método o variable estática Usando el nombre de clase
Método estático un método o variable de instancia No  
Método de instancia un método o variable estática Usando el nombre de clase o una variable de referencia
Método de instancia otro método o variable de instancia Usando una variable de referencia
  • Algunas variables estáticas no cambian durante la ejecución del programa. Se les llama constantes. Usan el modificador final para asegurarse de que su valor nunca cambia. La convención de nombres usada para las variables static final, indica que deben ser todas las letras mayúsculas, separando las palabras mediante guión bajo. Ejemplo:
    • private static final int ELEMENTOS_MAXIMOS = 10;
  • Inicialización estática: contienen fragmentos de código encerrados mediante llaves, precedidos de la palabra static. Se ejecutan cuando la clase se usa por primera vez. Las órdenes se ejecutan y asignan las variables estáticas según se necesiten. Ejemplo:
    • private static final int SEGUNDOS_POR_HORA;
      static {
      int numSegundosPorMinuto = 60;
      int numMinutosPorHora = 60;
      SEGUNDOS_POR_HORA = numSegundosPorMinuto * numMinutosPorHora;
      }
  • Las importaciones estáticas permiten importar los miembros estáticos de las clases. Únicamente los miembros estáticos.
    • import static java.util.Arrays; // No compila: está intentando importar la clase entera
    • import static java.util.Arrays.asList;
      Arrays.asList(“one”); // No compila: no se ha importado Arrays, sino simplemente asList como método estático
    • static import java.util.Arrays.*; // No compila: el orden es import static
  • Tampoco se permite la importación de miembros estáticos de distintas clases pero con el mismo nombre.
    • import static estaticos.A.TIPO;
      import static estaticos.B.TIPO; // No compila

 

main es un método estático, lo que quiere decir que se puede llamar mediante el nombre de la clase.
  • Los métodos estáticos tienen 2 propósitos principales:
    • Para utilidades o métodos auxiliares que no requieren ningún estado de objeto." data-share-imageurl="" style="position:fixed;bottom:0px;left:0px;">