oracle官网文档:
Nested Classes的好处 (A class只被 B class访问时)
1. 增强class逻辑组织,B class包含A class
2. 增强代码封装,A class隐藏与外面的世界
3. 利于阅读代码和维护代码
Nested Classes 分为 static nested class 和 inner class(Non-static nested classes) 如下表示:
class OuterClass {
interface DataStructureIterator extends java.util.Iterator { } //可以有接口
static class StaticNestedClass { }
class InnerClass {} }
1. static nested class :
调用 OuterClass.StaticNestedClass nestedObject =new OuterClass.StaticNestedClass();
限制 class内只能访问OuterClass的静态成员和OuterClass的实例引用
2. inner class : local class 和 anonymous class
调用 OuterClass.InnerClass innerObject = outerObject.new InnerClass();
限制 class不能有静态成员,可以有常量,可以访问OuterClass的成员和实例引用
3. local class (在任何Expressions,Statemebt,and Blocks中定义 如方法内)
限制 可以访问上层的OuterClass中的成员,不能改变上层Blocks(如方法)中变量
class OuterClass {
public void method() {
class localClass {}
}}
4. anonymous class(与local class一样,只是没有name)
HelloWorld spanishGreeting = new HelloWorld() {public void greet() {}}; 直接实现一个接口或类,然后返回实例使用
Nested Classes 何时使用
1. local class 要实例化多个,访问它的构造函数或设置个新名字时
2. anonymous class 实现字段和特定方法
3. inner class 与local class相似,有更多成员使用
4. static nested class 不需要访问成员时
阅读(1181) | 评论(0) | 转发(0) |