在 Java 中,允许在一个类(或方法、语句块)的内部定义另一个类,称为内部类(Inner Class),有时也称为嵌套类(Nested Class)。

内部类和外层封装它的类之间存在逻辑上的所属关系,一般只用在定义它的类或语句块之内,实现一些没有通用意义的功能逻辑,在外部引用它时必须给出完整的名称。

使用内部类的主要原因有:

  • 内部类可以访问外部类中的数据,包括私有的数据。
  • 内部类可以对同一个包中的其他类隐藏起来。
  • 当想要定义一个回调函数且不想编写大量代码时,使用匿名(anonymous)内部类比较便捷。
  • 减少类的命名冲突。

请看下面的例子:

  1. public class Outer {
  2. private int size;
  3. public class Inner {
  4. private int counter = 10;
  5. public void doStuff() {
  6. size++;
  7. }
  8. }
  9. public static void main(String args[]) {
  10. Outer outer = new Outer();
  11. Inner inner = outer.new Inner();
  12. inner.doStuff();
  13. System.out.println(outer.size);
  14. System.out.println(inner.counter);
  15. // 编译错误,外部类不能访问内部类的变量
  16. System.out.println(counter);
  17. }
  18. }

这段代码定义了一个外部类 Outer,它包含了一个内部类 Inner。将错误语句注释掉,编译,会生成两个 .class 文件:Outer.class 和 Outer$Inner.class。也就是说,内部类会被编译成独立的字节码文件。

内部类是一种编译器现象,与虚拟机无关。编译器将会把内部类翻译成用 $ 符号分隔外部类名与内部类名的常规类文件,而虚拟机则对此一无所知。

注意:必须先有外部类的对象才能生成内部类的对象,因为内部类需要访问外部类中的成员变量,成员变量必须实例化才有意义。

内部类是 Java 1.1 的新增特性,有些程序员认为这是一个值得称赞的进步,但是内部类的语法很复杂,严重破坏了良好的代码结构, 违背了Java要比C++更加简单的设计理念。

内部类看似增加了—些优美有趣,实属没必要的特性,这是不是也让Java开始走上了许多语言饱受折磨的毁灭性道路呢?本教程并不打算就这个问题给予一个肯定的答案。

六. 异常处理
1.异常处理基础
2.异常类型
3.未被捕获的异常
4.try和catch的使用
5.多重catch语句的使用
6.try语句的嵌套
7.throw:异常的抛出
8.throws子句
9.finally块
10.Java的内置异常
11.创建自己的异常子类
12.断言
七. 多线程编程
1.线程的概念
2.Java线程模型
3.主线程
4.创建线程
5.创建多线程
6.isAlive()和join()的使用
7.线程优先级
8.线程同步
9.线程间通信
10.线程死锁
11.线程的挂起、恢复和终止

Java内部类及其实例化相关推荐

  1. 看到如此详细的Java内部类,我泪目了

    Java内部类 介绍 定义 成员内部类 语法格式 使用说明 代码示例 局部内部类 语法格式 使用说明 代码示例 匿名内部类 语法格式 使用说明 代码示例 静态内部类 语法格式 使用说明 代码示例 介绍 ...

  2. Java内部类简介.

    一, 什么是内部类 Java中所谓内部类, 就是定义在另1个类内的类. 例如: class A{int a;class B{int b;} } 上面类B就是类A的一个内部类. 但是下面的写法, B只是 ...

  3. java内部类文件,Java内部类学习

    Java内部类学习 1.内部类的实例与外部类的实例共享一种特殊的关系,这种特殊的关系为内部类中的代码提供对封装(外部)类成员的访问.其实,内部类就是外部类的一部分.不仅仅是"一部分" ...

  4. 正儿八经的详细讲java内部类

    咳咳咳!!!!! 博主真的是正儿八经的人,但是是不是正儿八经的讲就不知道了 目录: 1.成员内部类 2.局部内部类 3.匿名内部类 4.静态内部类 5.内部类的优点 6.内部类的优点 1.成员内部类: ...

  5. Java内部类详解(使用场景和好处、相关内部类的笔试面试题)

    此篇文章作者为:Matrix海子 出处:http://www.cnblogs.com/dolphin0520/ 最近也是在学习java,看的是<java核心技术卷一>jdk8,看到内部类的 ...

  6. 在Java内部类中使用外部类的成员方法以及成员变量

    http://blog.csdn.net/zhongyili_sohu/article/details/8975947 众所周知,在定义成员方法或者成员变量的时候,可以给其加上一些权限的修饰词,以防止 ...

  7. (转)java内部类详解

    本文转自http://www.cnblogs.com/dolphin0520/p/3811445.html,谢谢作者 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能 ...

  8. Java内部类详解(转)

    说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟.下面是本 ...

  9. java内部类选择题_java内部类详解(附相关面试题)

    说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟. 一.内 ...

最新文章

  1. 用ext_skel,实现一个PHP扩展,添加到PHP并调用
  2. 如何使用 OpenCV 实现图像均衡?
  3. 网游运营基础知识与专业术语
  4. school‘s movie demonstration
  5. 在线预览视频/直播:m3u8、rmpt、mp4、flv
  6. (11.06)Java小知识
  7. 基于线性预测的语音编码原理解析
  8. Android开发之EditText自动获取焦点自动弹出软键盘的解决办法
  9. 腾讯智慧交通战略重磅升级 打造以人为中心的未来交通
  10. OpenJudge NOI 1.8 24:蛇形填充数组
  11. 华为谈“不造车” ,每辆车上赚1万元。王兴:特斯拉终于遇到真正的对手!...
  12. 机器学习8/100天-Logistic回归原理与实现
  13. MFC与stdafx
  14. 全国医院排名(2008)
  15. AWS SAA 认证考试心得
  16. Speech Representation预训练模型综述
  17. 计算机管理中其它设备问号,Win10设备管理器中设备上有白色问号如何解决
  18. 【AI绘画打卡】| 用漫画生成器绘制宅男最爱的二次元美女
  19. UER-py快速上手
  20. java两个frame之间_java – JFrame中的两个JPanel,另一个是JP

热门文章

  1. Entityframework:启用延时加载的主意事项(只为强化记忆)
  2. [leetcode] Restore IP Addresses
  3. Python学习笔记:常用内建模块6 (urllib)
  4. 学习Matlab强大的符号计算(解方程)
  5. 服务器上安装ffmpeg后报错及解决方案libavdevice.so.58: cannot open shared object file: No such file or directory
  6. JVM_java内存区域
  7. 寻找免费的阿里云云盾隐秘购买入口,申请并下载ssl证书(https证书)的详细步骤
  8. c语言vs开发小型数据库,用C语言开发小型数据库管理系统代码
  9. 中文文件名乱码_全能型Mac解压缩软件 MacZip2.0.1(41)中文版 原ezip
  10. 独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别