在 Java 中,可以将 main() 方法声明为私有 (private) 或受保护 (protected) 或不带任何访问修饰符吗?
Java 提供了各种访问修饰符,例如 private、public 和 protected 等。
私有 (Private) 修饰符限制了成员从类外部的访问。类和接口不能是公有的。
公有 (Public) 访问修饰符可以与类、方法、构造函数、接口等关联。public 可以从任何其他类访问。
受保护 (Protected) 访问修饰符可以与变量、方法和构造函数关联,在超类中声明为受保护的成员只能被其他包中的子类或受保护成员所在类的包中的任何类访问。
默认访问修饰符没有关键字,如果一个变量或方法没有声明任何访问控制修饰符,则同一个包中的任何其他类都可以访问它。
因此,如果将方法声明为 public,则可以从类外部的任何地方访问它。众所周知,如果 main 方法是 public,JVM 会直接访问/调用 main 方法,JVM 可以从任何地方调用它。
将 main 方法声明为私有或受保护
可以在程序中定义 main 方法,而不使用 private、protected 或 default(无)修饰符,程序可以在不出现编译错误的情况下进行编译。
但是,在执行时,JVM 不会将此视为程序的入口点。它会搜索具有 public、static、返回类型为 void 以及 String 数组作为参数的 main 方法。
public static int main(String[] args){ }
如果找不到这样的方法,则会生成运行时错误。
示例
在以下 Java 程序中,类 Sample 包含一个 public 的 main 方法。
public class Sample{ private static void main(String[] args){ System.out.println("This is a sample program"); } }
输出
执行此程序时,会生成以下错误。
Error: Main method not found in class Sample, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application
广告