问题一:
public class Api{
public int i= 20;
public void test(){

}
public static void main(String[] agrs){
System.out.println(new Sun().i);
}
}
class Sun  extends Api{
private int i = 10;

}有谁帮我解释一下
出错的提示如下:
D:\java\pingshi\pingshi>javac Api.java
Api.java:7: i 可以在 Sun 中访问 private
                        System.out.println(new Sun().i);
                                                    ^
1 错误
这是为什么呢?
问题二:public final class Api{
private static class String{};
public static void main(String[] agrs){
}
}
当在private static class String{};
中加上;出现错误的结果是
D:\java\pingshi\pingshi>java Api
Exception in thread "main" java.lang.NoSuchMethodError: main而不加private static class String{}
出现错误的结果是:D:\java\pingshi\pingshi>java Api
Exception in thread "main" java.lang.NoClassDefFoundError: Api
Caused by: java.lang.ClassNotFoundException: Api
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
在此请教高手帮忙介绍一下为什么?
谁的答案好我会 给高分的

解决方案 »

  1.   

    问题1:Sun里面的i是私有成员,不能从外面访问。
      

  2.   

    第一个太基础了!!!1.不能在类外面方位private变量,继承的也不行,继承的只能访问public和protected2.加上不能执行通过是因为String是已经定义过了的类,如果这个内部类是其他名字的话是可以通过的,不信你试试。并且去掉是可以执行通过的,你的不能通过不知道是不是你的版本问题,我的机器上是1.6,可以执行。
      

  3.   

    问题2:不要用String作为类名!
      

  4.   

    #2楼 得分:0回复于:2011-10-12 14:32:58第一个太基础了!!!1.不能在类外面方位private变量,继承的也不行,继承的只能访问public和protected2.加上不能执行通过是因为String是已经定义过了的类,如果这个内部类是其他名字的话是可以通过的,不信你试试。并且去掉是可以执行通过的,你的不能通过不知道是不是你的版本问题,我的机器上是1.6,可以执行。 
      

  5.   

    i是私有成员,不能从外面访问
    不能用String作为类名 如果楼主一定主函数中就写成java。lang。String[] args
      

  6.   

    每天回帖可获得10分可用分哦,呵呵 
    1.privat修饰的类是不可见的。程序可以改成:public class Api{
    public int i= 20;
    public void test(){}
    public static void main(String[] agrs){
    System.out.println(new Sun().i);
    }
    }
    class Sun extends Api{
    public int i = 10;}2.String()本身就是一个类,还能在创建一个静态的来。。?
      

  7.   

    继承,你指的是这个吗:
    public Test(){super();}可以重载如:
    public Test(){this("test");}
    public Test(String s){}重写是神马,不知道楼主意思,嘿嘿……