java中的main()函数是不是必须写在某个特定的类中,这个类的名子和源文件相同?

解决方案 »

  1.   

    不一定,一个java文件中可以有多个类,每个类都可以有自己的main方法,但是只有一个public类,文件的名字需跟该public类相同
      

  2.   

    这个mian方法放在哪儿都无所谓。mian函数并不是所在类的成员方法,而是逻辑上独立的一个启动类,一个程序可以有多个启动类,但是程序执行时只能从一个启动类开始。
      

  3.   

    package myPackage;
    class A
    {
    private void private_func()
    {
    System.out.println("这是超类中的private方法");
    } protected void protected_func()
    {
    System.out.println("这是超类中的非private方法");
    }
    }class ChildClass extends A
    {

    }class Test
    {
    public static void main(String[] args)
    {
    ChildClass cc = new ChildClass();
    //cc.private_func();
    cc.protected_func();
    }
    }
    那我这段代码怎么不能通过编译呢?
      

  4.   

    哦,不好意思,可以通过编译,但是运行抛出异常java.lang.NoSuchMethodError: main,为什么啊
      

  5.   

    没抛出异常啊...文件名药改成Test.java
      

  6.   

    为什么文件名要改成Test.java啊,A.java为什么就跑出异常呢
      

  7.   

    跟jvm的原理有关吧。编译的时候,每个类都生成一个class,如果文件名是A.java,程序从A.java开始执行,但里面没有main方法,就会报出 NoSuchMethodError:main了
      

  8.   

    main()是Java程序执行的入口,main()方法的定义必须包含在一个类中。并且运行程序是,输入的类名必须与main()方法所在的类名的名字相同。这是java程序的结构,必须这样做。
      

  9.   

    首先main方法可以写在任何类中,任何文件中,在java中,只有公共类才要求文件名必须和类名相同,而其它的情况没有限制。对于有main方法的类,它是一个java应用程序,也就是能过java 类名,就可以运行的程序.注意,必须是有main方法的类才能运行。楼主这种情况并不是你的程序有问题,而是eclipse的事,eclipse 运行java程序时,它会默认找和文件名相同的类来运行程序,也就是如果你的文件名是Test,它就会运行Test类,如果你的文件名是A,它就会运行A类。但这种情况是可以手动指定的,方法是在你的源文件上点击右键--》run as--》java application然后,eclipse会扫描这个源文件中哪些类中有main方法,然后你就可以选择相应的类来运行。