Anular y sobrecargar métodos estáticos en Java
- Sobrecarga de métodos
- Anulación de métodos
- Sobrecargar un método estático en Java
- Anular un método estático en Java
En este artículo, discutiremos si es posible anular y sobrecargar métodos estáticos en Java. Pero antes de continuar, asegurémonos de tener claros algunos puntos clave:
La naturaleza orientada a objetos de Java hace que la anulación y la sobrecarga sean funciones cruciales. Cuando un programador necesita versatilidad, puede utilizar esta funcionalidad.
Sobrecarga de métodos
El polimorfismo en tiempo de compilación, también conocido como polimorfismo estático, está estrechamente relacionado con la sobrecarga, otra característica de los lenguajes de programación orientados a objetos como Java. Esta función permite que muchos métodos tengan el mismo nombre y firmas distintas.
Estas firmas pueden variar de varias maneras, incluido el número de argumentos de entrada y el tipo de parámetros de entrada.
Método estático
Un método estático es un método que comienza con la palabra clave static
. Los métodos de nivel de clase son otro nombre para este concepto.
La función estática
está disponible para todas las instancias de clase a través de una implementación estándar.
Anulación de métodos
La anulación es una característica de los lenguajes de programación orientados a objetos como Java que facilita el polimorfismo en tiempo de ejecución. Un método definido en una superclase a menudo se implementa en una subclase o clase derivada.
El objeto que llama determina qué implementación se realizará en tiempo de ejecución. Es importante recordar que las firmas de ambos métodos deben ser idénticas.
Después de una explicación de la sobrecarga y anulación de métodos, hablaremos sobre si es posible o no anular o sobrecargar un método estático en Java.
Sobrecargar un método estático en Java
Sí, podemos sobrecargar los métodos estáticos. Sin embargo, es crucial recordar que la firma del método debe ser única, o podemos tener dos o más métodos estáticos con el mismo nombre pero distintos parámetros de entrada.
Considere el siguiente ejemplo para comprender mejor este concepto:
-
En el siguiente ejemplo, creamos dos métodos estáticos llamados:
public static void A() {} public static void Z(int b) {}
-
Después de eso, acabamos de llenar estos métodos con algunos datos que se mostrarán cuando se llamen, como los siguientes:
public static void A() { System.out.println(" A() method is called: Hi, Muhammad Zeeshan here. "); }
-
Por último, llama a ambos métodos en el método
main()
para sobrecargarlos:public static void main(String args[]) { Shani.A(); Shani.Z(2); }
Código completo:
public class Shani {
public static void A() {
System.out.println(" A() method is called: Hi, Muhammad Zeeshan here. ");
}
public static void Z(int b) {
System.out.println(" Z(int b) method is called: Hello, Programmers. ");
}
public static void main(String args[]) {
Shani.A();
Shani.Z(2);
}
}
Cuando sobrecargamos los métodos llamando al método main()
, obtendremos el siguiente resultado:
A() method is called: Hi, Muhammad Zeeshan here.
Z(int b) method is called: Hello, Programmers.
Anular un método estático en Java
Los métodos estáticos se unen mediante enlace estático en tiempo de compilación. Es por eso que no podemos anularlos porque la anulación de métodos se basa en el enlace dinámico en el tiempo de ejecución, y los métodos estáticos ya están enlazados mediante el enlace dinámico en el tiempo de ejecución.
Por lo tanto, no podemos anular los métodos estáticos.
Veamos el siguiente ejemplo para entender mejor:
- Las clases
Árbol
yRaíz
a continuación tienen la misma firma de método, un método estático llamadoMostrar()
. El método oculto deRoot
cubre la función original de la clase base. - Llamar a un método estático en un objeto de una clase
Root
invocará el método estático de la claseRoot
. - En el método
main()
, cuando invocamos un método estático pasando un objeto de la claseTree
, se invoca el método estático original, como podemos ver en el siguiente ejemplo:
public class Shani {
public static void main(String args[]) {
Tree t = new Root();
t.Show();
}
}
Código completo:
public class Shani {
public static void main(String args[]) {
Tree t = new Root();
t.Show();
}
}
class Tree {
public static void Show() {
System.out.println(" Show() method of the *Tree* class ");
}
}
class Root extends Tree {
public static void Show() {
System.out.println(" Overridden static method in *Root* class in Java ");
}
}
Producción :
Show() method of the *Tree* class
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn