(这一系列的文章代码均摘自thingking in java,之后就不再另外声明了,感谢 thinking in java)

之前在别人的代码里面见过内部类,但是一直疑惑,为什么会有内部类这个东西,在我看来在Class里面定义几个属性和函数也没什么区别呀。

今日开始翻thinking in java,就直奔此章节去了。

//: innerclasses/Parcel1.java

// Creating inner classes.public class Parcel1 {class Contents {private int i = 11;public int value() { return i; }}class Destination {private String label;Destination(String whereTo) {label = whereTo;}String readLabel() { return label; }}   // Using inner classes looks just like// using any other class, within Parcel1:public void ship(String dest) {Contents c = new Contents();Destination d = new Destination(dest);System.out.println(d.readLabel());}public static void main(String[] args) {Parcel1 p = new Parcel1();p.ship("Tasmania");}
} /* Output:
Tasmania
*///:~

这算做内部类最基本的用法了,看到这里还是觉得,内部类真是不知道有什么用。

但是,当看到下一个用法-“链接到外部类”,突然有点明白了

//: innerclasses/Sequence.java

// Holds a sequence of Objects.interface Selector {boolean end();Object current();void next();
}   public class Sequence {private Object[] items;private int next = 0;public Sequence(int size) { items = new Object[size]; }public void add(Object x) {if(next < items.length)items[next++] = x;}private class SequenceSelector implements Selector {private int i = 0;public boolean end() { return i == items.length; }public Object current() { return items[i]; }public void next() { if(i < items.length) i++; }}public Selector selector() {return new SequenceSelector();} public static void main(String[] args) {Sequence sequence = new Sequence(10);for(int i = 0; i < 10; i++)sequence.add(Integer.toString(i));Selector selector = sequence.selector();while(!selector.end()) {System.out.print(selector.current() + " ");selector.next();}}
} /* Output:
0 1 2 3 4 5 6 7 8 9
*///:~

看完这段,突然就想起了迭代器。这样一写,将数组的存储写入和读取良好的分隔了开来,同时两者之间又有一定的关系关联着。对于Selector,别的类也可以按照自己的方式来实现它,代码的通用性瞬间加强了。到此,才觉得,内部类用好了,绝对精妙呀,绝对不是之前所理解的代码的组合。

他人blog参考:http://blog.csdn.net/historyasamirror/article/details/6049073

THJ之内部类初探(1)相关推荐

  1. JAVA_SE之内部类

    内部类分类: 1. 成员内部类 静态内部类 非静态内部类 2. 局部内部类 3. 匿名内部类 1. 成员内部类: package com.atguigu.java; /** 类的第5个成员:内部类* ...

  2. 08 Java程序员面试宝典视频课程之内部类

    一.方法内部能不能定义类? 答: 可以,是方法内部类 二.说出定义内部类的方式? 答: A.成员内部类: 1.定义在另一个类(外部类)的内部,与成员方法和属性平级,属于类 的一个成员,可以用 priv ...

  3. java基础学习,一些零散的笔记之内部类

    内部类有着这么一句话,"接口只是解决了部分问题,而内部类使得多重继承的解决方案变得更加完整". 依我的理解,一个类只能继承一个类,内部类也不另外,但为什么说内部类是的Java能解决 ...

  4. java学习面向对象之内部类

    什么是面向对象内部类呢?所谓的内部类,即从字面意义上来理解的话,就是把类放到类当中. 那么内部类都有什么特点呢? 1.内部类可以访问包裹他的类的成员. 2.如果包裹他的类想访问被其包裹的类的话就得实例 ...

  5. c++接口调用外部类_Java基础:Java语法糖4之内部类

    内部类 最后一个语法糖,讲讲内部类,内部类指的就是在一个类的内部再定义一个类. 内部类之所以也是语法糖,是因为它仅仅是一个编译时的概念,outer.java里面定义了一个内部类inner,一旦编译成功 ...

  6. java入门之内部类

    Java 中的成员内部类 内部类中最常见的就是成员内部类,也称为普通内部类.我们来看如下代码: 运行结果为: 从上面的代码中我们可以看到,成员内部类的使用方法: 1. Inner 类定义在 Outer ...

  7. 学习java过程之内部类

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.内部类是什么? 二.内部类有哪些? 局部内部类 匿名内部类(重点!!!) 成员内部类 静态内部类 总结 前言 在J ...

  8. java语言--------javaSE之内部类

    内部类 概述说明 概念:把类定义在其他类的内部,这个类就被称为内部类. 举例:在类A中定义了一个类B,类B就是内部类. 内部类访问特点: 1.内部类可以直接访问外部类的成员,包括私有. 2.外部类要访 ...

  9. 【职坐标】高级特性之内部类简介

    Java内部类总结 一. 内部类 i. 概念 可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类 ii. 内部类优缺点 1. 内部类可以很好的实现隐藏 2. 内部类可以直接访问外部类的 ...

最新文章

  1. Centos 7 意外断电如何处理
  2. 阿里云网盘,开放申请啦!非会员下载 10MB/s!有图有真相!
  3. Java的未来项目:巴拿马,织布机,琥珀和瓦尔哈拉
  4. matlab课程设计图像处理,MATLAB课程设计--GUI图像处理
  5. 多数据源处理-苞米豆-dynamic
  6. CPU合并写缓冲区简介
  7. 30天扣篮训练计划_明日之后:网易CH用心良苦?狼人画出“辐射高校30天计划”,绝了...
  8. SpringBoot2.x 同个文件的加载顺序,静态资源文件
  9. js深拷贝和浅拷贝对数组的影响_javaScript中的深拷贝和浅拷贝
  10. Log4j和Slf4j的比较
  11. 周期性任务计划: Crontab
  12. 机器学习—模型超参数调优之网格搜索与随机搜索
  13. 不是有效的win32程序_Python实用案例编程入门:第十一章 做一个年会抽奖程序
  14. 中国车牌号的识别大全
  15. Affine set 和 convex set 的定义
  16. OFFICE 您正试图运行的函数包含有宏或需要宏语言的解决方法
  17. 二代旅游网站CMS缓存列表
  18. loj #6247. 九个太阳
  19. 安裝打印機或者掃描器驅動時,出現「unknown device」(不明裝置)的提示,怎麼辦?...
  20. 变长数组-C99新特性

热门文章

  1. 服务器 报警以及相关信息 预案,服务器故障应急预案
  2. CKKS同态加密方案初步学习
  3. flex+FluorineFx ASP.NET 视频拍照
  4. python弹钢琴_flash钢琴自动弹奏之Python实现
  5. 博客升级_原水_新浪博客
  6. 宣传一下一个在线SEO工具:http://www.linjunseo.com/seo
  7. android调用系统照相机保存照片以及压缩上传下载
  8. 石像鬼(Gargoyle)1.8.1 ar71xx SS + pdnsd 实现代理
  9. JAVA爬虫(二):哔哩哔哩动画搞笑排行榜爬取
  10. Easyui-iconCls 的队应图标