¿Qué es un método estático?
Un método de programación de computadora orientado a objetos que se declara en una clase pero que no depende de ninguna instancia particular de esa clase se llama 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 hacer un método estático. 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 usar nombres de objetos para referirse a estos métodos, pero se desaconseja encarecidamente. Si se usa un nombre de objeto, una persona que lee el código puede confundir uno de estos métodos con un método de instancia.
Los métodos estáticos a menudo se usan en clases de utilidad que no dependen de variables de instancia de ninguna clase en particular. También se usan cuando un programador necesita acceder al método, pero no es necesario instanciar la clase en la que está contenido. 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 las variables de instancia y a los métodos de instancia. Debido a la naturaleza de los métodos de instancia que tienen un 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 normalmente utilizados en las clases regulares.
Un inconveniente importante de los métodos estáticos ocurre durante la herencia cuando se usa el polimorfismo. Mientras 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 técnicamente se llama ocultar en lugar de anular porque no se puede anular un método estático.
Cuando se utiliza la ocultación, si se accede al método estático principal utilizando el nombre de la clase, se utilizará el método principal. Si se accede al método estático secundario anulado utilizando el nombre del objeto, se utilizará el método secundario anulado. El problema se produce cuando un objeto secundario se convierte como padre. En este caso, una llamada al método estático secundario activado utilizará el método principal en lugar del método secundario esperado. Con el verdadero polimorfismo, el método hijo sería el que se activaría después de un cambio.