虽然用的不多,但还是决定把这一块模糊的知识,彻底的清理一下。
这次最大的收获就是发现原来内部类,并不是我以为的内部类, inner class 和 nested static class是同层次的, 而我一直把这两个都叫内部类, 于是标题也从java 内部类改成了各种类,名词害死人啊, Java的名词又多又乱,还是可扩展比较稳妥一点J
事实上,如果区分出inner class和nested static class,也更有助于理解内部类, 因为内部类本身所有容易混淆的地方都可以归结为对static关键字的理解,static 依赖于类而不是实例, nested static class也只依赖于类,构造nested static class也就不需要实例,如
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
但它也就无法访问当前不存在outerclass的非静态成员
而inner class依赖于包容类, 其构造要先有一个包容类的实例,
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
剩下还有局部类和匿名类,比较简单, 代码有里有进一步解释.