2010-09-21 15 views
51

¿Podemos sobrecargar un método main() en Java?¿Podemos sobrecargar el método principal en Java?

+2

¿Por qué quieres sobrecargar el método main(). Puede crear tantas clases como quiera con main() si desea un comportamiento de inicio diferente. Simplemente indique la clase principal cuando invoque el jar.O simplemente podría agregar un argumento adicional que pruebe cuando su inicio principal afecte a lo que hace. – locka

Respuesta

98

Usted puede sobrecargar el método main(), pero sólo public static void main(String[] args) se utilizará cuando la clase se pone en marcha por la JVM. Por ejemplo:

public class Test { 
    public static void main(String[] args) { 
     System.out.println("main(String[] args)"); 
    } 

    public static void main(String arg1) { 
     System.out.println("main(String arg1)"); 
    } 

    public static void main(String arg1, String arg2) { 
     System.out.println("main(String arg1, String arg2)"); 
    } 
} 

que la voluntad siempre main(String[] args) de impresión cuando se ejecuta java Test ... desde la línea de comandos, incluso si se especifica uno o dos argumentos de línea de comandos.

Puede llamar al método main() usted mismo desde el código, por supuesto, en ese punto se aplicarán las reglas normales de sobrecarga.

EDIT: Tenga en cuenta que se puede utilizar una firma varargs, ya que es equivalente desde el punto de vista de JVM:

public static void main(String... args) 
+2

Por JVM, para ser precisos, uno puede llamar manualmente a cualquier versión sobrecargada. –

+0

podría ufls Dame un pequeño ejemplo ... – Mohan

+0

Ya siempre imprime el valor principal (String [] args) en la consola, incluso he pasado argumentos en la línea de comandos. Luego, ¿para qué sirve la sobrecarga main()? – Mohan

11

sí, se puede sobrecargar principal método en Java. Pero el programa no ejecuta el método principal sobrecargado cuando ejecuta su programa, tiene que llamar al método principal sobrecargado desde el método principal real.

que significa que el método principal actúa como un punto de entrada para que el intérprete de Java inicie la ejecución de la aplicación. donde como un principal cargado se necesita llamar desde main.

+0

Buena respuesta. Gracias. :) –

+0

Gran respuesta, pero incluso la JVM no puede vencer a Skeet. –

4

Sí, por sobrecarga de método. Puede tener cualquier cantidad de métodos principales en una clase por sobrecarga de método. Veamos el ejemplo simple:

class Simple{ 
    public static void main(int a){ 
    System.out.println(a); 
    } 

    public static void main(String args[]){ 
    System.out.println("main() method invoked"); 
    main(10); 
    } 
} 

Se dará el siguiente resultado:

main() method invoked 
10 
1

Sí se puede sobrecargar el método principal. El método principal no debe ser un método principal estático.

2

Sí, puede sobrecargar el método principal en Java. tienes que llamar al método principal sobrecargado desde el método principal real.

1

Sí, el método principal puede estar sobrecargado. El método principal sobrecargado se debe invocar desde dentro del "vacío público estático principal (String args [])" ya que este es el punto de entrada cuando la JVM inicia la clase. También el método principal sobrecargado puede tener cualquier calificador como método normal.

3

sí, se puede sobrecargar principal()

Pero para ser claro - aunque se puede sobrecargar principal, sólo la versión con la firma estándar será ejecutable como una aplicación desde la línea de comandos . por ejemplo

public static void main(String[] args,int a){ 
// some code 
} 
2)public static void main(String[] args){//JVM will call this method to start 
// some code 
} 
1

Esto es perfectamente legal:

public static void main(String[] args) { 

} 

public static void main(String argv) { 
    System.out.println("hello"); 
} 
1

Sí. El método 'main()' puede estar sobrecargado. Intenté poner algo de código para responder a tu pregunta.

public class Test{ 
static public void main(String [] args) 
     { 
       System.out.println("In the JVMs static main"); 
       main(5, 6, 7); //Calling overloaded static main method 
       Test t = new Test(); 
       String [] message = { "Subhash", "Loves", "Programming" }; 
       t.main(5); 
       t.main(6, message); 
     } 

     public static void main(int ... args) 
     { 
       System.out.println("In the static main called by JVM's main"); 
       for(int val : args) 
       { 
         System.out.println(val); 
       } 
     } 

     public void main(int x) 
     { 
       System.out.println("1: In the overloaded non-static main with int with value " + x); 
     } 

     public void main(int x, String [] args) 
     { 
       System.out.println("2: In the overloaded non-static main with int with value " + x); 
       for (String val : args) 
       { 
         System.out.println(val); 
       } 
     } 
} 

de salida:

$ java Test 
In the JVMs static main 
In the static main called by JVM's main 
5 
6 
7 
1: In the overloaded non-static main with int with value 5 
2: In the overloaded non-static main with int with value 6 
Subhash 
Loves 
Programming 
$ 

En el código anterior, tanto-método estático, así como una versión no estática de los métodos principales están sobrecargados con fines de demostración. Tenga en cuenta que, al escribir JVMs main, quiero decir, es el método principal que JVM usa primero para ejecutar un programa.

2

Sí, puede hacerlo.

El método main en Java no es un método extraterrestre. Además del hecho de que main() es como cualquier otro método & puede sobrecargarse de manera similar, JVM siempre busca la firma del método para iniciar el programa.

  • Los normales main método actúa como un punto de entrada para la JVM para iniciar la ejecución del programa.

  • Podemos sobrecargar el método main en Java. Pero el programa no ejecuta
    el método sobrecargado main cuando ejecutamos su programa, necesitamos para llamar al método sobrecargado main solo desde el método principal real.

    // A Java program with overloaded main() 
    import java.io.*;  
    public class Test {   
        // Normal main() 
        public static void main(String[] args) { 
        System.out.println("Hi Geek (from main)"); 
        Test.main("Geek"); 
        }  
        // Overloaded main methods 
        public static void main(String arg1) { 
        System.out.println("Hi, " + arg1); 
        Test.main("Dear Geek","My Geek"); 
        } 
        public static void main(String arg1, String arg2) { 
        System.out.println("Hi, " + arg1 + ", " + arg2); 
        } 
    } 
    

    Valid variants of main() in Java

0

Sí se puede sobrecargar el método principal, pero no debe haber sólo un método con la firma public static void main(string args[])

package rh1; 

public class someClass 
{ 

    public static void main(String... args) 
    { 
     System.out.println("Hello world"); 

     main("d"); 
     main(10); 
    } 
    public static void main(int s) 
    { 

     System.out.println("Beautiful world"); 
    } 
    public static void main(String s) 
    { 
     System.out.println("Bye world"); 
    } 
} 
1

Sí, u puede sobrecargar el método principal, pero el intérprete siempre busque la sintaxis correcta del método principal para comenzar la ejecución. Y sí tiene que llamar al método principal sobrecargado con la ayuda de objeto.

class Sample{ 
public void main(int a,int b){ 
System.out.println("The value of a is " +a); 
} 
public static void main(String args[]){ 
System.out.println("We r in main method"); 
Sample obj=new Sample(); 
obj.main(5,4); 
main(3); 
} 
public static void main(int c){ 
System.out.println("The value of c is" +c); 
} 
} 

The output of the program is: 
We r in main method 
The value of a is 5 
The value of c is 3 
0

Si un método principal puede sobrecargarse como otras funciones pueden ser cosa overloaded.One hay que tener cuidado es que no debe haber al menos una función principal con "args String []" .Y como argumentos no puede haber cualquier número de funciones principales en su programa con diferentes argumentos y functionality.Lets entender a través de un ejemplo sencillo:

Class A{ 

public static void main(String args) 
{ 
System.out.println("This is the main function "); 
A object= new A(); 
object.main("Hi this is overloaded function");//Calling the main function 
} 

public static void main(String argu)  //duplicate main function 
{ 
System.out.println("main(String argu)"); 
} 
} 

salida: esta es la función principal
función Hola, esta es sobrecargado

1

Sí Según mi punto de vista, podemos sobrecargar el método principal, pero la sobrecarga de método lo es. Por ejemplo

class main_overload { 
    public static void main(int a) { 
     System.out.println(a); 
    } 
    public static void main(String args[]) { 
     System.out.println("That's My Main Function"); 
     main(100); 
    } 
} 

en este doble Volver reducir el paso, sólo estoy llamando el método principal ....

Cuestiones relacionadas