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方法作为应用程序的入口比较特殊外,其他情况下与正常的静态方法是没什么区别的。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值