class A{
    int a=f();
    int f(){return 1;}
    }    class B extends A{
    int b=a;
    int f(){return 2;}
    
    public static void main(String args[]){
    B b1= new B();
    System.out.println(b1.b);
    }
    }为什么编译不成功啊,提示
java.lang.NoSuchMethodError: main
Exception in thread "main"

解决方案 »

  1.   

    程序本身没有任何问题,运行结果是2。楼主的问题主要出在运行时的操作上了。如果你是用Eclipse开发的话,右键点击package explorer中类B的main方法,选择run ->java application即可!学习慢慢来^_^
      

  2.   

    要么就是你的classpath没设置好。
      

  3.   

    首先,你的问题不涉及多态的问题
    其次,可能是你的文件名是A.java,事实上需要B.java
      

  4.   

    你是不是在Jbuilder下面用默认设置运行的啊??
      

  5.   

    不知道你用的是什么工具,我用Jcreator的话你要把鼠标放在有main函数的类里面,这样才能运行,如果放在外面的话就会出现你所说的问题
    但是编译是没问题的,是运行才这样的
      

  6.   

    public static void main(String args[])是定义在B上的,且B类不是public类,是一个内部类
    而这个文件的public类没有,当然编译不过了
      

  7.   

    楼上的
    1。main方法是在B类里面,但B也并非一定要public
    2。B不是一个内部类,看清楚