¿Qué es un método estático?

Un método de programación informática orientado a objetos que se declara en una clase pero que no depende de ninguna instanciación particular de esa clase se denomina método estático. La mayoría de los lenguajes de programación incluyen la palabra clave static en la declaración de un método para convertirlo en static. Estos métodos pertenecen estrictamente a la clase en la que están contenidos y no a ningún objeto instanciado de esa clase. Con frecuencia se les conoce como métodos de clase.

El nombre literal de la clase se usa normalmente para acceder a un método estático en lugar de referirse a él con el nombre de un objeto instanciado. Está permitido en Java utilizar nombres de objeto para hacer referencia a estos métodos, pero se desaconseja enfáticamente. Si se usa un nombre de objeto, una persona que lea el código puede confundir uno de estos métodos con un método de instancia.

Los métodos estáticos se utilizan a menudo en clases de utilidad que no dependen de variables de instancia de ninguna clase en particular. También se utilizan cuando un programador necesita acceder al método pero no es necesario crear una instancia de la clase en la que está contenida. Las clases de utilidad normalmente no se instancian en objetos. Sería inusual que un método de utilidad tuviera la necesidad de modificar la información del objeto. Un método de la clase java.lang.math, como pow (), sería un ejemplo de cómo se usaría este tipo de método en una clase de utilidad.

Los métodos de instancia pueden acceder directamente a variables de instancia, variables estáticas, métodos de instancia y métodos estáticos. Los métodos estáticos no pueden acceder directamente a variables de instancia y métodos de instancia. Debido a la naturaleza de los métodos de instancia que tienen mejor acceso a los miembros de la clase que los métodos estáticos, los métodos de instancia son el tipo de métodos que se usan normalmente en las clases regulares.

Un inconveniente importante de los métodos estáticos se produce durante la herencia cuando se utiliza polimorfismo. Siempre que el método estático principal no se declare final, el mismo método estático secundario se puede codificar en la clase secundaria como si se anulara. Esto se denomina técnicamente ocultar en lugar de anular porque un método estático no se puede anular.

Cuando se utiliza la ocultación, si se accede al método estático padre utilizando el nombre de la clase, se utilizará el método padre. Si se accede al método estático hijo anulado mediante el nombre del objeto, se utilizará el método hijo anulado. El problema se produce cuando un objeto hijo se convierte en padre. En este caso, una llamada al método estático secundario upcast utilizará el método principal en lugar del método secundario esperado. Con el polimorfismo verdadero, el método hijo sería el que se activará después de un upcast.