关于java:Java面试手册基础篇Java中的main方法能否被覆盖重写

34次阅读

共计 872 个字符,预计需要花费 3 分钟才能阅读完成。

答案是否定的,因为 main 办法是静态方法,静态方法是一个类办法,在应用的时候不须要实例化,是间接应用类名来调用办法的,而在 Java 中静态方法在编译时会联合在一起,所以不能笼罩静态方法,笼罩是针对于实例办法而言的。

上面来看一个具体的示例,先创立两个类 MainParent.javaMainChild.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 

更多无关 Java 面试相干的知识点能够关注【Java 面试手册】小程序,波及 Java 根底、多线程、JVM、Spring、Spring Boot、Spring Cloud、Mybatis、Redis、数据库、数据结构与算法等。

正文完
 0