《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(); } }
new NonAnonymousClass() {//匿名类,继承了NonAnonymousClass void f() {//覆盖其f()方法 // } }.f();这句代码什么意思?谁继承谁?
new NonAnonymousClass() {//匿名类,继承了NonAnonymousClass void f() {//覆盖其f()方法 // } }.f();意思是:声明了一个没有明确类名的匿名类,(匿名类)继承了NonAnonymousClass,重新定义(在这也就是覆盖)了f()方法的行为,并new了这个匿名类的一个实例同时调用了该实例的f()方法。
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();
}
}
void f() {//覆盖其f()方法
//
}
}.f();这句代码什么意思?谁继承谁?
void f() {//覆盖其f()方法
//
}
}.f();意思是:声明了一个没有明确类名的匿名类,(匿名类)继承了NonAnonymousClass,重新定义(在这也就是覆盖)了f()方法的行为,并new了这个匿名类的一个实例同时调用了该实例的f()方法。
sun1979song(十步杀一人) 有时间可以交流一下吗
[email protected]