1 按照JAVA解惑上的例子:
public final class Api {
private static class String{};  
public static void main(String[] args) {
}
}为什么我运行报错:
java.lang.NoSuchMethodError: main
Exception in thread "main" 
2 为什么覆盖、实现方法不能减少可见性,但是域却可以?
public class Parent { public int i=20; public void test() { }

public static void main(String[] args) {
//10
  System.out.println(new Sun().i);
}}class Sun extends Parent{

 int i=10;  //这个可以设置成private,下面的方法却不行

/* //Cannot reduce the visibility of the inherited method from Parent
private void test() { }*/

}

解决方案 »

  1.   

    1.
    public static void main(String[] args)  
    里面的String是用的你定义的String类 
    main方法自然就找不到合适参数了public static void main(java.long.String[] args) 
    这样就可以通过了
      

  2.   

    第一个
    主函数中的String应该是java.lang包中的,你自己写了就自己覆盖了,主函数也就不可以执行了,楼上说的清楚
    第二个
    楼主属于覆盖父类的方法,在覆盖的时候不能降低方法的可见性,你的程序将父类中的public降低为private了所以可以,但是对于数据就没有这个问题,楼主可以看一下域的隐藏详细了解一下
      

  3.   


    补充下, 还要import java.lang.*;  ( 不是long...)
    2, override和overload,  这里不能仅改变public, private,  也不能仅仅改变return type
    如果加上参数是可以的,如private void test(int x) { }