¿Qué significa método estático?
En Java, un método estático es un método que pertenece a una clase y no a una instancia de una clase. El método es accesible a todas las instancias de una clase, pero a los métodos definidos en una instancia sólo puede acceder ese objeto de una clase.
Un método estático no forma parte de los objetos que crea, sino que forma parte de la definición de una clase. A diferencia de los métodos de instancia, un método estático es referenciado por el nombre de la clase y puede ser invocado sin crear un objeto de clase.
En términos más sencillos, son métodos que existen aunque aún no se haya construido ningún objeto y que no requieren un objeto de invocación.
Definición de método estático
Java permite a los desarrolladores definir métodos estáticos, que también están disponibles para todas las instancias de una clase.
En una instancia de una clase, los métodos estáticos no pueden acceder a las variables de una instancia ni a las que pertenecen a una clase. Sólo pueden acceder a campos estáticos y tienen que utilizar referencia a objetos.
Uso habitual de los métodos estáticos
El uso más habitual de los métodos estáticos es acceder a variables estáticas. Se accede a ellos mediante el nombre de la clase y un punto (.) seguido del nombre de un método. Se declaran con la palabra clave «static» al definir un método.
Se puede acceder a los métodos estáticos sin tener que crear un nuevo objeto. Un método estático sólo puede utilizar y llamar a otros métodos estáticos o a miembros de datos estáticos. Suele utilizarse para operar con argumentos de entrada (que siempre puede aceptar), realizar cálculos y devolver valores.
Los métodos estáticos suelen ser métodos de utilidad
Los métodos estáticos suelen ser métodos de utilidad que se encuentran en las clases System, Wrapper y Collections y que se utilizan porque pueden ser más eficientes. Pueden ser empleados por distintas clases sin tener que crear una instancia, lo que a veces puede marcar la diferencia.
Los métodos se crean como estáticos cuando el estado del objeto no afecta a su comportamiento, porque sólo dependen de sus propios parámetros.
Interfaces de Java 8
Los métodos estáticos también pueden definirse en interfaces en Java 8 y versiones posteriores. Para evitar errores, las clases de implementación no pueden sobrescribir los métodos estáticos de las interfaces.
Los métodos estáticos suelen ser preferibles cuando:
- Todos los métodos de instancia deben compartir un fragmento específico de código (aunque aún podrías tener un método de instancia para eso).
- Quieres llamar al método sin tener que crear una instancia de esa clase.
- Debes asegurarte de que la clase de utilidad no se modifique nunca.
- No quieres que se sobrescriba la definición de ese método.
- Tu método no utiliza ninguna variable de instancia, y el código no depende de la creación de instancias.