含main()方法的主类是否必须加public修饰符?何时需添加?
主类必须添加public修饰符的场景
首先明确Java的核心规则:一个源文件里最多只能有一个public类,且这个public类的名字必须和文件名完全一致。结合带main()方法的主类的使用场景,必须加public的情况有以下几种:
当主类的类名和源文件名完全匹配时
比如你的源文件名叫Prac_1_3.java,那里面的主类必须声明为public class Prac_1_3,否则编译器会直接报错。你之前的代码能运行,大概率是因为源文件名和类名prac_1_3不一致,这种情况下类不需要public修饰,Java允许非public类作为程序入口。当需要从其他包访问这个主类时
如果你的主类需要被其他包的代码引用、实例化,或者调用它的方法(虽然主类通常是程序入口,但也存在这类场景),必须给类加上public修饰符——默认的包访问权限仅允许同包类访问,其他包无法访问非public的类。部分IDE或构建工具的强制要求
有些IDE(比如早期版本的Eclipse)或者构建工具(比如某些打包插件),会默认要求主类是public的,否则在配置项目入口、打包成可执行JAR时可能出现异常。这不是Java语言规范强制的,但属于工具层面的约束。
另外补充:不管主类是不是public,里面的main()方法必须是public static void类型,参数必须是String[] args(或String... args),这是Java虚拟机识别程序入口的硬性要求。
内容的提问来源于stack exchange,提问作者Sahil Nayak
相关产品推荐
相关产品推荐

