我发现看《Think in java》有点不符合我的口味,
翻译的难懂语句的意思!

解决方案 »

  1.   

    《Thinking in java》我没仔细看过,感觉不是一本初级Java书,所以Java语言的很多细节没有讲清楚。
    Java里的class跟C++比要丰富的多,分类标准多样,但按照规范,总可以分为顶层类和嵌套类(nested class,指定义在其它类的body里)两种。嵌套类又可以细分为两种:成员类(member class)和本地类(local class,定义在代码块中);成员类分为静态德和非静态的,特性区别很大,非静态成员类真正称为内部类(inner class),但现在内部类被滥用了,所有嵌套类都叫成inner class了!本地类可分为匿名类和非匿名类,本地类被限制为不能访问所在代码块有效范围里的非final变量。呵呵,明白了吗?举个例子:
    public class TopLevelClass {
        static class StaticMemberClass {};
        class InnerClass {};
        void f(final int a, int b) {
            final int c;
            int d;
            class NonAnonymousClass {
                void f() {
                    //可以访问a,c;b,d不可见
                }
            };
            new NonAnonymousClass() {//匿名类,继承了NonAnonymousClass
                void f() {//覆盖其f()方法
                    //
                }
            }.f();
        }
    }
      

  2.   

    new NonAnonymousClass() {//匿名类,继承了NonAnonymousClass
                void f() {//覆盖其f()方法
                    //
                }
            }.f();这句代码什么意思?谁继承谁?
      

  3.   

    new NonAnonymousClass() {//匿名类,继承了NonAnonymousClass
                void f() {//覆盖其f()方法
                    //
                }
            }.f();意思是:声明了一个没有明确类名的匿名类,(匿名类)继承了NonAnonymousClass,重新定义(在这也就是覆盖)了f()方法的行为,并new了这个匿名类的一个实例同时调用了该实例的f()方法。
      

  4.   

    感谢  sun1979song(十步杀一人),虽然你说的不是很明白, :)我问的是 Java 为什么要这么安排。 呵呵。
      

  5.   

    to:
     sun1979song(十步杀一人) 有时间可以交流一下吗
    [email protected]