Warum sollten Sie die main () -Methode überladen wollen? Sie können mit main () beliebig viele Klassen erstellen, wenn Sie ein anderes Startverhalten wünschen. Geben Sie einfach die Hauptklasse an, wenn Sie das Glas aufrufen. Oder Sie können einfach ein zusätzliches Argument hinzufügen, das Sie testen, wenn Ihr Hauptstart startet und das sich auf seine Funktionsweise auswirkt.
Locka
Antworten:
127
Sie können die main()Methode überladen , sie wird jedoch nur public static void main(String[] args)verwendet, wenn Ihre Klasse von der JVM gestartet wird. Zum Beispiel:
Dies wird immer gedruckt, main(String[] args)wenn Sie java Test ...über die Befehlszeile ausgeführt werden, auch wenn Sie ein oder zwei Befehlszeilenargumente angeben.
Sie können die main()Methode natürlich selbst aus dem Code aufrufen - an diesem Punkt werden die normalen Überladungsregeln angewendet.
BEARBEITEN: Beachten Sie, dass Sie eine varargs-Signatur verwenden können, da dies vom JVM-Standpunkt aus gleichwertig ist:
Um genau zu sein, mit der JVM kann man jede überladene Version manuell aufrufen.
Péter Török
1
@ Mohan: Das gleiche wie bei jeder anderen Methode. Sie können main()von einer anderen Stelle in Ihrem Code aus anrufen .
Jon Skeet
1
@ Santhosh: Nein, immer noch String[]. Dies ist die einzige Signatur, die als Einstiegspunkt erkannt wird.
Jon Skeet
1
@JavaMan: Nun, das steht in der Spezifikation ... Wenn Sie eine andere Signatur angegeben hätten (z. B. eine mit Ihrer eigenen Klasse als einem der Parameter), wie würde die JVM wissen, welche Argumente zu liefern sind?
Jon Skeet
1
@RiteshPuri: Ich kann nicht viel in Bezug auf einen Zweck sehen, aber es wäre auch seltsam, die Überlastung zu verhindern . Vergessen Sie nicht, dass die mainMethode auch direkt aus anderem Code aufgerufen werden kann. Es ist also nicht so, als wäre eine solche Überladung nicht möglich.
Jon Skeet
17
Ja, Sie können die Hauptmethode in Java überladen. Das Programm führt die überladene Hauptmethode jedoch nicht aus, wenn Sie Ihr Programm ausführen. Sie müssen die überladene Hauptmethode von der eigentlichen Hauptmethode aus aufrufen.
Das bedeutet, dass die Hauptmethode als Einstiegspunkt für den Java-Interpreter fungiert, um die Ausführung der Anwendung zu starten. wo als geladene main von main aufgerufen werden muss.
Tolle Antwort, aber selbst die JVM kann Skeet nicht schlagen.
Arvindh Mani
4
Ja, durch Methodenüberladung. Durch Überladen von Methoden können Sie eine beliebige Anzahl von Hauptmethoden in einer Klasse haben. Sehen wir uns das einfache Beispiel an:
Aber um klar zu sein - obwohl Sie main überladen können, kann nur die Version mit der Standardsignatur als Anwendung über die Befehlszeile ausgeführt werden. z.B
publicstaticvoidmain(String a,String... args){
// some code
}
2)publicstaticvoidmain(String[] args){//JVM will call this method to start // some code
}
Ja, die Hauptmethode kann überladen sein. Die überladene Hauptmethode muss innerhalb der "public static void main (String args [])" aufgerufen werden, da dies der Einstiegspunkt ist, wenn die Klasse von der JVM gestartet wird. Auch überladene Hauptmethoden können beliebige Qualifikationsmerkmale haben wie normale Methoden.
Die mainMethode in Java ist keine außerirdische Methode. Abgesehen von der Tatsache, dass main()JVM wie jede andere Methode auf ähnliche Weise überladen werden kann, sucht es immer nach der Methodensignatur, um das Programm zu starten.
Die normale mainMethode fungiert als Einstiegspunkt für die JVM, um die Ausführung des Programms zu starten.
Wir können die mainMethode in Java überladen . Das Programm führt
die überladene mainMethode jedoch nicht aus , wenn wir Ihr Programm ausführen. Wir müssen die überladene mainMethode nur von der eigentlichen Hauptmethode aus aufrufen .
// A Java program with overloaded main()import java.io.*;
publicclassTest{
// Normal main()publicstaticvoidmain(String[] args){
System.out.println("Hi Geek (from main)");
Test.main("Geek");
}
// Overloaded main methodspublicstaticvoidmain(String arg1){
System.out.println("Hi, " + arg1);
Test.main("Dear Geek","My Geek");
}
publicstaticvoidmain(String arg1, String arg2){
System.out.println("Hi, " + arg1 + ", " + arg2);
}
}
Ja. Die Methode 'main ()' kann überladen werden. Ich habe versucht, einen Code einzugeben, um Ihre Frage zu beantworten.
publicclassTest{
staticpublicvoidmain( 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 );
}
publicstaticvoidmain( int ... args ){
System.out.println( "In the static main called by JVM's main" );
for( int val : args )
{
System.out.println( val );
}
}
publicvoidmain( int x ){
System.out.println( "1: In the overloaded non-static main with int with value " + x );
}
publicvoidmain( 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 );
}
}
}
Ausgabe:
$ 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
$
Im obigen Code werden sowohl die statische Methode als auch eine nicht statische Version der Hauptmethoden zu Demonstrationszwecken überladen. Beachten Sie, dass beim Schreiben von JVMs main die Hauptmethode ist, mit der JVM zuerst ein Programm ausführt.
Ja, Sie können die Hauptmethode überladen, aber der Interpreter sucht immer nach der richtigen Syntax der Hauptmethode, um mit der Ausführung zu beginnen. Und ja, Sie müssen die überladene Hauptmethode mit Hilfe des Objekts aufrufen.
classSample{
publicvoidmain(int a,int b){
System.out.println("The value of a is " +a);
}
publicstaticvoidmain(String args[]){
System.out.println("We r in main method");
Sample obj=new Sample();
obj.main(5,4);
main(3);
}
publicstaticvoidmain(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
Ja, eine Hauptmethode kann überladen werden, da andere Funktionen überladen werden können. Es muss darauf geachtet werden, dass mindestens eine Hauptfunktion mit " String args [] " als Argumenten vorhanden ist. Und es kann eine beliebige Anzahl von Hauptfunktionen enthalten Ihr Programm mit verschiedenen Argumenten und Funktionen. Lassen Sie uns anhand eines einfachen Beispiels verstehen:
Class A{
publicstaticvoidmain(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
}
publicstaticvoidmain(String argu)//duplicate main function{
System.out.println("main(String argu)");
}
}
Ausgabe: Dies ist die Hauptfunktion.
Hi, dies ist eine überladene Funktion
Ja, Sie können die Hauptmethode überladen, aber in jeder Klasse sollte es nur eine Methode mit Signatur geben, public static void main(string args[])bei der Ihre Anwendung die Ausführung startet, wie wir in jeder Sprache wissen. Die Ausführung beginnt mit der Hauptmethode.
Antworten:
Sie können die
main()
Methode überladen , sie wird jedoch nurpublic static void main(String[] args)
verwendet, wenn Ihre Klasse von der JVM gestartet wird. Zum Beispiel: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)"); } }
Dies wird immer gedruckt,
main(String[] args)
wenn Siejava Test ...
über die Befehlszeile ausgeführt werden, auch wenn Sie ein oder zwei Befehlszeilenargumente angeben.Sie können die
main()
Methode natürlich selbst aus dem Code aufrufen - an diesem Punkt werden die normalen Überladungsregeln angewendet.BEARBEITEN: Beachten Sie, dass Sie eine varargs-Signatur verwenden können, da dies vom JVM-Standpunkt aus gleichwertig ist:
public static void main(String... args)
quelle
main()
von einer anderen Stelle in Ihrem Code aus anrufen .String[]
. Dies ist die einzige Signatur, die als Einstiegspunkt erkannt wird.main
Methode auch direkt aus anderem Code aufgerufen werden kann. Es ist also nicht so, als wäre eine solche Überladung nicht möglich.Ja, Sie können die Hauptmethode in Java überladen. Das Programm führt die überladene Hauptmethode jedoch nicht aus, wenn Sie Ihr Programm ausführen. Sie müssen die überladene Hauptmethode von der eigentlichen Hauptmethode aus aufrufen.
Das bedeutet, dass die Hauptmethode als Einstiegspunkt für den Java-Interpreter fungiert, um die Ausführung der Anwendung zu starten. wo als geladene main von main aufgerufen werden muss.
quelle
Ja, durch Methodenüberladung. Durch Überladen von Methoden können Sie eine beliebige Anzahl von Hauptmethoden in einer Klasse haben. Sehen wir uns das einfache Beispiel an:
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); } }
Es wird die folgende Ausgabe geben:
main() method invoked 10
quelle
JA, Sie können main () überladen
Aber um klar zu sein - obwohl Sie main überladen können, kann nur die Version mit der Standardsignatur als Anwendung über die Befehlszeile ausgeführt werden. z.B
public static void main(String a,String... args){ // some code } 2)public static void main(String[] args){//JVM will call this method to start // some code }
quelle
Ja, Sie können die Hauptmethode in Java überladen. Sie müssen die überladene Hauptmethode von der eigentlichen Hauptmethode aufrufen.
quelle
Ja, die Hauptmethode kann überladen sein. Die überladene Hauptmethode muss innerhalb der "public static void main (String args [])" aufgerufen werden, da dies der Einstiegspunkt ist, wenn die Klasse von der JVM gestartet wird. Auch überladene Hauptmethoden können beliebige Qualifikationsmerkmale haben wie normale Methoden.
quelle
Ja, du kannst.
Die
main
Methode in Java ist keine außerirdische Methode. Abgesehen von der Tatsache, dassmain()
JVM wie jede andere Methode auf ähnliche Weise überladen werden kann, sucht es immer nach der Methodensignatur, um das Programm zu starten.Die normale
main
Methode fungiert als Einstiegspunkt für die JVM, um die Ausführung des Programms zu starten.Wir können die
main
Methode in Java überladen . Das Programm führtdie überladene
main
Methode jedoch nicht aus , wenn wir Ihr Programm ausführen. Wir müssen die überladenemain
Methode nur von der eigentlichen Hauptmethode aus aufrufen .// 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); } }
Gültige Varianten von main () in Java
quelle
Ja, wir können die Hauptmethode überladen. Hauptmethode darf keine statische Hauptmethode sein.
quelle
Das ist völlig legal:
public static void main(String[] args) { } public static void main(String argv) { System.out.println("hello"); }
quelle
Ja. Die Methode 'main ()' kann überladen werden. Ich habe versucht, einen Code einzugeben, um Ihre Frage zu beantworten.
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 ); } } }
Ausgabe:
$ 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 $
Im obigen Code werden sowohl die statische Methode als auch eine nicht statische Version der Hauptmethoden zu Demonstrationszwecken überladen. Beachten Sie, dass beim Schreiben von JVMs main die Hauptmethode ist, mit der JVM zuerst ein Programm ausführt.
quelle
Ja, Sie können die Hauptmethode überladen, aber der Interpreter sucht immer nach der richtigen Syntax der Hauptmethode, um mit der Ausführung zu beginnen. Und ja, Sie müssen die überladene Hauptmethode mit Hilfe des Objekts aufrufen.
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
quelle
Ja Meiner Ansicht nach können wir die Hauptmethode überladen, aber das Überladen der Methode ist es. Zum Beispiel
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); } }
In diesem Double Back-Schrägstrich rufe ich nur die Hauptmethode auf ....
quelle
Ja, eine Hauptmethode kann überladen werden, da andere Funktionen überladen werden können. Es muss darauf geachtet werden, dass mindestens eine Hauptfunktion mit " String args [] " als Argumenten vorhanden ist. Und es kann eine beliebige Anzahl von Hauptfunktionen enthalten Ihr Programm mit verschiedenen Argumenten und Funktionen. Lassen Sie uns anhand eines einfachen Beispiels verstehen:
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)"); } }
Ausgabe: Dies ist die Hauptfunktion.
Hi, dies ist eine überladene Funktion
quelle
Ja, Sie können die Hauptmethode überladen, aber in jeder Klasse sollte es nur eine Methode mit Signatur geben,
public static void main(string args[])
bei der Ihre Anwendung die Ausführung startet, wie wir in jeder Sprache wissen. Die Ausführung beginnt mit der Hauptmethode.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"); } }
quelle