main()方法可以指定为private还是protected?

时间:2010-05-31 05:02:24

标签: java

main()方法可以指定为私有还是受保护?

它会编译吗?

它会运行吗?

5 个答案:

答案 0 :(得分:17)

  

方法main()可以指定为private还是protected?

  

会编译吗?

  

它会运行吗?

是的,但不能将其作为申请的切入点。如果从其他地方调用它,它将运行。

试一试:

$cat PrivateMain.java  
package test;
public class PrivateMain {
    protected  static void main( String [] args ) {
        System.out.println( "Hello, I'm proctected and I'm running");
    }
}
class PublicMain {
    public static void main( String [] args ) {
        PrivateMain.main( args );
    }
}
$javac -d . PrivateMain.java  
$java test.PrivateMain
Main method not public.
$java test.PublicMain
Hello, I'm proctected and I'm running

在此代码中,受保护的方法不能用作应用程序的入口点,但可以从类PublicMain

调用它

不能调用私有方法,而是从类本身调用。所以你需要这样的东西:

 public static void callMain() {
      main( new String[]{} );
 }

如果它是私有的,请致电main

答案 1 :(得分:5)

是的,它会编译。但它不会成为该计划的切入点。

Java查找公共主方法签名。如果任何修饰符不同,那么它将把它假设为其他方法。

运行并测试4个自己。 :)

答案 2 :(得分:4)

您可以根据需要使用任何主要方法创建尽可能多的类。除非与签名相符,否则它们不能成为切入点。

答案 3 :(得分:0)

它将编译,它不会运行(使用Eclipse测试)。

答案 4 :(得分:0)

是的,它将编译,但是 未运行 。它会给您以下错误

错误:在类A中找不到主要方法,请将该主要方法定义为:    公共静态void main(String [] args) 或JavaFX应用程序类必须扩展javafx.application.Application

以下是简单的测试代码

class A {
  private static void main(String arg[])
  {
  System.out.print(2+3);
  }
}