Java内部类及其实例化
在 Java 中,允许在一个类(或方法、语句块)的内部定义另一个类,称为内部类(Inner Class),有时也称为嵌套类(Nested Class)。
内部类和外层封装它的类之间存在逻辑上的所属关系,一般只用在定义它的类或语句块之内,实现一些没有通用意义的功能逻辑,在外部引用它时必须给出完整的名称。
使用内部类的主要原因有:
- 内部类可以访问外部类中的数据,包括私有的数据。
- 内部类可以对同一个包中的其他类隐藏起来。
- 当想要定义一个回调函数且不想编写大量代码时,使用匿名(anonymous)内部类比较便捷。
- 减少类的命名冲突。
请看下面的例子:
- public class Outer {
- private int size;
- public class Inner {
- private int counter = 10;
- public void doStuff() {
- size++;
- }
- }
- public static void main(String args[]) {
- Outer outer = new Outer();
- Inner inner = outer.new Inner();
- inner.doStuff();
- System.out.println(outer.size);
- System.out.println(inner.counter);
- // 编译错误,外部类不能访问内部类的变量
- System.out.println(counter);
- }
- }
这段代码定义了一个外部类 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内部类及其实例化相关推荐
- 看到如此详细的Java内部类,我泪目了
Java内部类 介绍 定义 成员内部类 语法格式 使用说明 代码示例 局部内部类 语法格式 使用说明 代码示例 匿名内部类 语法格式 使用说明 代码示例 静态内部类 语法格式 使用说明 代码示例 介绍 ...
- Java内部类简介.
一, 什么是内部类 Java中所谓内部类, 就是定义在另1个类内的类. 例如: class A{int a;class B{int b;} } 上面类B就是类A的一个内部类. 但是下面的写法, B只是 ...
- java内部类文件,Java内部类学习
Java内部类学习 1.内部类的实例与外部类的实例共享一种特殊的关系,这种特殊的关系为内部类中的代码提供对封装(外部)类成员的访问.其实,内部类就是外部类的一部分.不仅仅是"一部分" ...
- 正儿八经的详细讲java内部类
咳咳咳!!!!! 博主真的是正儿八经的人,但是是不是正儿八经的讲就不知道了 目录: 1.成员内部类 2.局部内部类 3.匿名内部类 4.静态内部类 5.内部类的优点 6.内部类的优点 1.成员内部类: ...
- Java内部类详解(使用场景和好处、相关内部类的笔试面试题)
此篇文章作者为:Matrix海子 出处:http://www.cnblogs.com/dolphin0520/ 最近也是在学习java,看的是<java核心技术卷一>jdk8,看到内部类的 ...
- 在Java内部类中使用外部类的成员方法以及成员变量
http://blog.csdn.net/zhongyili_sohu/article/details/8975947 众所周知,在定义成员方法或者成员变量的时候,可以给其加上一些权限的修饰词,以防止 ...
- (转)java内部类详解
本文转自http://www.cnblogs.com/dolphin0520/p/3811445.html,谢谢作者 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能 ...
- Java内部类详解(转)
说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟.下面是本 ...
- java内部类选择题_java内部类详解(附相关面试题)
说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟. 一.内 ...
最新文章
- 用ext_skel,实现一个PHP扩展,添加到PHP并调用
- 如何使用 OpenCV 实现图像均衡?
- 网游运营基础知识与专业术语
- school‘s movie demonstration
- 在线预览视频/直播:m3u8、rmpt、mp4、flv
- (11.06)Java小知识
- 基于线性预测的语音编码原理解析
- Android开发之EditText自动获取焦点自动弹出软键盘的解决办法
- 腾讯智慧交通战略重磅升级 打造以人为中心的未来交通
- OpenJudge NOI 1.8 24:蛇形填充数组
- 华为谈“不造车” ,每辆车上赚1万元。王兴:特斯拉终于遇到真正的对手!...
- 机器学习8/100天-Logistic回归原理与实现
- MFC与stdafx
- 全国医院排名(2008)
- AWS SAA 认证考试心得
- Speech Representation预训练模型综述
- 计算机管理中其它设备问号,Win10设备管理器中设备上有白色问号如何解决
- 【AI绘画打卡】| 用漫画生成器绘制宅男最爱的二次元美女
- UER-py快速上手
- java两个frame之间_java – JFrame中的两个JPanel,另一个是JP
热门文章
- Entityframework:启用延时加载的主意事项(只为强化记忆)
- [leetcode] Restore IP Addresses
- Python学习笔记:常用内建模块6 (urllib)
- 学习Matlab强大的符号计算(解方程)
- 服务器上安装ffmpeg后报错及解决方案libavdevice.so.58: cannot open shared object file: No such file or directory
- JVM_java内存区域
- 寻找免费的阿里云云盾隐秘购买入口,申请并下载ssl证书(https证书)的详细步骤
- c语言vs开发小型数据库,用C语言开发小型数据库管理系统代码
- 中文文件名乱码_全能型Mac解压缩软件 MacZip2.0.1(41)中文版 原ezip
- 独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别