当前位置:网站首页>父类的main方法可以被继承么?有什么特殊?
父类的main方法可以被继承么?有什么特殊?
2022-08-09 11:13:00 【Java技术债务】
问题
- main方法能重载么?
- main方法能被其他方法调用么?
- main方法可以继承么?
main方法的特殊
首先针对 main 方法的格式定义:
- public :main 方法是启动的时候由 JVM 进行加载的,public 的可访问权限是最高的,所以需要声明为 public;
- static :方法的调用要么是通过对象,要么是通过类,而 main 方法的话因为是由虚拟机调用的,所以无需生成对象,那么声明为 static 即可;
- main :至于为什么方法名称叫 main,我想应该是参考的是 C 语言的方法名吧;
- void :main 方法退出时,并没有需要有相关返回值需要返回,所以是 void;
- String[] :此字符串数组用来运行时接受用户输入的参数;因为字符串在 Java 中是具有通用普遍性的,所以使用字符串是最优选择;数组的话,因为我们的参数不止一个,所以数组肯定是合适的;
不过自 JDK1.5 引入动态参数后,String[]数组也可以使用String… args来实现。
1 main方法能重载么?
答案是肯定的,
public class Main {
public static void main(String args) {
System.out.println("hello world:" + args);
}
public static void main(String[] args) {
main("test");
}
}
编译运行,很显然没啥问题,除了 JVM 规定的作为应用程序入口的 main 方法之外,其他的 main 方法都是比较普通的方法。
2 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方法执行:3
main方法执行:2
main方法执行:1
main方法执行:0
所以说即使是作为应用程序入口的 main 方法,也是可以被其他方法调用的
2 main方法可以继承么?
当类继承时,子类可以继承父类的方法和变量,那么当父类定义了 main 方法,而子类没有 main 方法时,能继承父类的 main 方法,从而正常的运行程序么?
public class Main {
public static void main(String[] args) {
System.out.println("hello world");
}
}
//子类
static class Main2 extends Main {
}
这时候我们运行子类 Main2,可以发现,同样打印了hello world,这说明 main 方法也是可以继承的。那么还有一种隐藏的情况也很显然了,子类定义自己的 main 方法,隐藏掉父类中的实现,那么这也是可以的。
总结
除了main方法作为应用程序的入口比较特殊外,其他情况下与正常的静态方法是没什么区别的。
边栏推荐
猜你喜欢
美的数字化平台 iBUILDING 背后的技术选型
fidder为什么不会抓包的问题
x86 Exception Handling and Interrupt Mechanism (3) Interrupt Handling Process
电磁场与电磁波-场论基础
People | How did I grow quickly from programmer to architect?
Number theory knowledge
API接口是什么?API接口常见的安全问题与安全措施有哪些?
MySQL查询性能优化七种武器之索引潜水
[现代控制理论]5_系统的可控性_controllability
去除蜂窝状的噪声(matlab实现)
随机推荐
【DB运营管理/开发解决方案】上海道宁为您提供提高工作便利性的集成开发工具——Orange
PAT1007
electron 应用开发优秀实践
信号量SIGCHLD的使用,如何让父进程得知子进程执行结束,如何让父进程区分多个子进程的结束
PAT1014 未解决
ACM最长不下降子序列问题
x86 exception handling and interrupt mechanism (2) interrupt vector table
程序员的专属浪漫——用3D Engine 5分钟实现烟花绽放效果
PAT1004
golang runtime Caller、Callers、CallersFrames、FuncForPC、Stack作用
PTA习题 分类统计字符个数(C)
PAT1010
PAT1001
PTA 指定位置输出字符串(c)
redis内存的淘汰机制
Error: Cannot find module ‘./application‘
UNIX哲学
七夕?程序员不存在的~
End-to-End Object Detection with Fully Convolutional Network学习笔记
PAT1009