Anular y sobrecargar métodos estáticos en Java

Muhammad Zeeshan 12 octubre 2023
  1. Sobrecarga de métodos
  2. Anulación de métodos
  3. Sobrecargar un método estático en Java
  4. Anular un método estático en Java
Anular y sobrecargar métodos estáticos 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:

  1. En el siguiente ejemplo, creamos dos métodos estáticos llamados:

    public static void A() {}
    public static void Z(int b) {}
    
  2. 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. ");
    }
    
  1. 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:

  1. Las clases Árbol y Raíz a continuación tienen la misma firma de método, un método estático llamado Mostrar(). El método oculto de Root cubre la función original de la clase base.
  2. Llamar a un método estático en un objeto de una clase Root invocará el método estático de la clase Root.
  3. En el método main(), cuando invocamos un método estático pasando un objeto de la clase Tree, 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
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

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

Artículo relacionado - Java Method