¿Cómo sobrecargar el método principal en Java?
La sobrecarga de métodos se puede definir como una característica en la que una clase puede tener más de un método con el mismo nombre si y solo si difieren en la cantidad de parámetros o el tipo de parámetros o ambos, entonces pueden o no tener el mismo tipo de retorno. . La sobrecarga de métodos es una de las formas en que Java admite el polimorfismo.
Sí , podemos sobrecargar el método principal en Java, pero JVM solo llama al método principal original, nunca llamará a nuestro método principal sobrecargado.
El siguiente ejemplo ilustra la sobrecarga de main() en java
Ejemplo 1:
// Java program to demonstrate // Overloading of main() public class GFG { // Overloaded main method 1 // According to us this overloaded method // Should be executed when int value is passed public static void main(int args) { System.out.println("main() overloaded" + " method 1 Executing"); } // Overloaded main method 2 // According to us this overloaded method // Should be executed when character is passed public static void main(char args) { System.out.println("main() overloaded" + " method 2 Executing"); } // Overloaded main method 3 // According to us this overloaded method // Should be executed when double value is passed public static void main(Double[] args) { System.out.println("main() overloaded" + " method 3 Executing"); } // Original main() public static void main(String[] args) { System.out.println("Original main()" + " Executing"); } }
Producción:
Como en el ejemplo anterior, está claro que cada vez que se ejecuta el método principal original, pero no los métodos sobrecargados, porque JVM solo ejecuta el método principal original de forma predeterminada, pero no el sobrecargado.
Entonces, para ejecutar métodos sobrecargados de main, debemos llamarlos desde el método principal original.
Ejemplo 2:
En este ejemplo, ejecutaremos todas las sobrecargas del método principal una por una
// Java program to demonstrate // Overloading of main() public class GFG { // Overloaded main method 1 public static void main(boolean args) { if (args) { System.out.println("main() overloaded" + " method 1 Executing"); System.out.println(args); // Calling overloaded main method 2 GFG.main("Geeks", "For Geeks"); } } // Overloaded main method 2 public static void main(String a, String b) { System.out.println("main() overloaded" + " method 2 Executing"); System.out.println(a + " " + b); } // Overloaded main method 3 public static void main(int args) { System.out.println("main() overloaded" + " method 3 Executing"); System.out.println(args); } // Original main() public static void main(String[] args) { System.out.println("Original main()" + " Executing"); System.out.println("Hello"); // Calling overloads of the main method // Calling overloaded main method 1 GFG.main(true); // Calling overloaded main method 3 GFG.main(987654); } }
Producción:
Original main() Executing Hello main() overloaded method 1 Executing true main() overloaded method 2 Executing Geeks For Geeks main() overloaded method 3 Executing 987654
¿Anulando el método main() en Java?
Cada vez que hacemos herencia en Java, si un método en la subclase tiene el mismo nombre y firma de tipo que un método en su clase principal o superclase, entonces se dice que el método en la subclase está anulando el método de la clase principal. La anulación de métodos es una de las formas en que Java admite el polimorfismo en tiempo de ejecución.
No , no podemos anular el método principal de Java porque no se puede anular un método estático.
El método estático en Java está asociado con la clase, mientras que el método no estático está asociado con un objeto. Estático pertenece al área de clase, los métodos estáticos no necesitan un objeto para llamar. Los métodos estáticos se pueden llamar directamente usando el nombre de clase ( classname.static_method_name() ).
Entonces, siempre que intentemos ejecutar el método estático de la clase derivada, ejecutará automáticamente el método estático de la clase base.
Por lo tanto, no es posible anular el método principal en Java.
Para saber más sobre la anulación del método estático en Java , visite aquí