【Java面试手册-基础篇】Java中的main()方法能否被覆盖重写?

网友投稿 704 2022-10-28

【Java面试手册-基础篇】Java中的main()方法能否被覆盖重写?

【Java面试手册-基础篇】Java中的main()方法能否被覆盖重写?

答案是否定的,因为main方法是静态方法,静态方法是一个类方法,在使用的时候不需要实例化,是直接使用类名来调用方法的,而在Java中静态方法在编译时会结合在一起,所以不能覆盖静态方法,覆盖是针对于实例方法而言的。

下面来看一个具体的示例,先创建两个类 MainParent.java 和 MainChild.java

MainParent.java

package com.magic.main; public class MainParent { public static void main(String[] args) { System.out.println("Hello, Parent"); } }

MainChild.java

package com.magic.main; public class MainChild extends MainParent { public static void main(String[] args) { System.out.println("Hello, Child"); } }

上面的 MainChild.java 中的 main() 方法看似是覆盖了 MainParent.java 中的,但实际上并不是真正的覆盖,只是它们拥有相同签名的方法而已。通常情况下,如果子类覆盖父类的方法,是需要在方法上加上 @Override 注解的,尝试给子类的 main() 方法加上 @Override,会直接提示错误,无法正确编译的。

public class MainChild extends MainParent { @Override public static void main(String[] args) { System.out.println("Hello, Child"); } }

具体的错误信息如下:

Method does not override method from its superclass

::: hljs-center

:::

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:从连接到生态,凡泰极客 FinClip2.0 开启企业端小程序应用新时代
下一篇:小程序如何导出 App?小程序导出 App功能优化
相关文章

 发表评论

暂时没有评论,来抢沙发吧~