提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、main方法的格式定义
- 二、main方法可以被继承吗?
- 三、main方法能重载吗?
- 四、main方法可以被其它方法调用吗
- 总结
前言
main方法可以继承吗?
main方法能重载吗?
main方法可以被其它方法调用吗?
提示:以下是本篇文章正文内容,下面案例可供参考
一、main方法的格式定义
- 【public】main方法启动时是由JVM进行加载的,public是访问权限最高的修饰符,因此使用public;
- 【static】方法的调用要么是通过对象,要么是通过类,而 main 方法的话因为是由java虚拟机调用的,所以无需生成对象,那么声明为 static 即可;
- 【main】至于为什么方法名称叫 main,java开发者规定的,比如 C 语言的方法名也是固定的;
- 【void】因为main方法结束时无需返回值,因此使用void;
- 【String[]】此字符串数组用来运行时接受用户输入的参数;因为字符串在 Java 中是具有通用普遍性的,所以使用字符串是最优选择;数组的话,因为我们的参数不止一个,所以数组肯定是合适的
注意:不过自 JDK1.5 引入动态参数后,String[]数组也可以使用String… args来实现。
public static void main(String[] args) {
}
除了上面 JVM 规定的这个 main 方法比较特殊外,其他的 main 方法与普通的静态方法是没有什么不同的
二、main方法可以被继承吗?
当类继承时,子类可以继承父类的方法和变量,那么当父类定义了 main 方法,而子类没有 main 方法时,能继承父类的 main 方法,从而正常的运行程序么?
父类(示例):
public class Main {
public static void main(String[] args) {
System.out.println("我是父类的main方法");
}
}
子类(示例):
//Main的子类
public class MainClass extends Main {
}
运行结果
通过上述测试获取结果:我们运行子类 MainClass ,可以发现,打印了“我是父类的main方法”,这说明 main 方法也是可以继承的。那么还有一种隐藏的情况也很显然了,子类定义自己的 main 方法,隐藏掉父类中的实现,那么这也是可以的。
子类中声明main方法(示例):
public class MainClass extends Main {
public static void main(String[] args) {
System.out.println("我是MainClass的main方法");
}
}
运行结果
这时候就会打印子类自己的内容了:“我是MainClass的main方法”
三、main方法能重载吗?
重载是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同的方法。
验证代码(示例):
public class Main {
public static void main(String args) {
System.out.println("hello main!" + args);
}
public static void main(String[] args) {
main("你好!");
}
}
运行结果
通过上述代码我们可知main方法是可以重载的。编译运行,很显然没啥问题,除了 JVM 规定的作为应用程序入口的 main 方法之外,其他的 main 方法都是比较普通的方法。
四、main方法可以被其它方法调用吗
方法的调用就是在一个方法中调用另一个方法,在其它方法中调用main方法。
测试代码(示例):
public class Main {
private static int times = 3;
public static void main2(String[] args) {
times--;
main(args);
}
public static void main(String[] args) {
System.out.println("main方法执行:" + times);
if (times <= 0) {
System.exit(0);
}
main2(args);
}
}
运行结果
通过上述代码我们可知即使是作为应用程序入口的 main 方法,也是可以被其他方法调用的,但要注意程序的关闭方式,别陷入死循环了。
总结
通过上述可知,除了main方法作为应用程序的入口比较特殊外,其他情况下与正常的静态方法是没什么区别的。