Chinaunix首页 | 论坛 | 博客
  • 博客访问: 34163
  • 博文数量: 7
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 66
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-27 14:06
个人简介

好记性不如记博客

文章分类

全部博文(7)

文章存档

2015年(7)

我的朋友

分类: Java

2015-04-15 16:58:04

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 不需要访问成员时

阅读(1155) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~