答案是否定的,main()办法必须public,不能定义main()办法为private和protected,也不能不用拜访修饰符。
这是为了能让JVM拜访main()办法,如果不定义main()办法为public,尽管编译也会胜利,但会失去运行时谬误,因为找不到main办法。
(1)上面来进行验证,先把 public 改成 private,如下:
package com.magic.main;public class MainDemo { private static void main(String[] args) { System.out.println("Hello World"); } }
尝试运行程序,失去的后果如下:
谬误: 在类 com.magic.main.MainDemo 中找不到 main 办法, 请将 main 办法定义为: public static void main(String[] args)否则 JavaFX 应用程序类必须扩大javafx.application.Application
(2)把 public 改成 protected,如下:
package com.magic.main;public class MainDemo { protected static void main(String[] args) { System.out.println("Hello World"); } }
尝试运行程序,失去的后果如下:
谬误: 在类 com.magic.main.MainDemo 中找不到 main 办法, 请将 main 办法定义为: public static void main(String[] args)否则 JavaFX 应用程序类必须扩大javafx.application.Application
(3)去掉 public 修饰符
package com.magic.main;public class MainDemo { static void main(String[] args) { System.out.println("Hello World"); } }
尝试运行程序,失去的后果如下:
谬误: 在类 com.magic.main.MainDemo 中找不到 main 办法, 请将 main 办法定义为: public static void main(String[] args)否则 JavaFX 应用程序类必须扩大javafx.application.Application
从下面能够得出结论,main() 办法必须应用 public 润饰,那么问题来了:能不能申明main()办法为非静态方法?
更多无关Java面试相干的知识点能够关注【Java面试手册】小程序,波及Java根底、多线程、JVM、Spring、Spring Boot、Spring Cloud、Mybatis、Redis、数据库、数据结构与算法等。