如何在Java中重载和覆盖 main 方法
如何在Java中重载main方法?
方法重载可以定义为一种特性,其中一个类可以有多个具有相同名称的方法,当且仅当它们的参数数量或参数类型或两者不同时,它们可能具有或可能不具有相同的返回类型.方法重载是Java支持多态的方式之一。
是的,我们可以重载Java中的main方法,但是JVM只调用原来的main方法,它永远不会调用我们重载的main方法。
下面的例子说明了Java中main()的重载
示例 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");
}
}
输出:
从上面的例子可以清楚地看出,每次执行原来的 main 方法而不是重载的方法,因为 JVM 默认只执行原来的 main 方法,而不是重载的方法。
所以,要执行 main 的重载方法,我们必须从原来的 main 方法中调用它们。
示例 2:
在这个例子中,我们会一一执行main方法的所有Overloads
// 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);
}
}
输出:
Original main() Executing
Hello
main() overloaded method 1 Executing
true
main() overloaded method 2 Executing
Geeks For Geeks
main() overloaded method 3 Executing
987654
覆盖Java中的main()方法?
每当我们在Java中进行继承时,如果子类中的方法与其父类或超类中的方法具有相同的名称和类型签名,那么就说子类中的方法覆盖了父类的方法。方法覆盖是Java支持运行时多态的方式之一。
不,我们不能覆盖Java的 main 方法,因为不能覆盖静态方法。
Java中的静态方法与类相关联,而非静态方法与对象相关联。静态属于类区域,静态方法不需要调用对象。可以使用类名( classname.static_method_name() )直接调用静态方法。
所以,每当我们尝试执行派生类的静态方法时,它都会自动执行基类的静态方法。
因此,无法覆盖Java中的 main 方法。
要了解有关在Java中覆盖静态方法的更多信息,请访问此处