Java -- 内部类
2016-08-25 18:22
211 查看
原文:http://www.cnblogs.com/dolphin0520/p/3811445.html
@、分类:
成员内部类、局部内部类、匿名内部类和静态内部类。
@、成员内部类:
1、不可包含static变量和方法,但是可以有static final 变量,但是此变量必须被初始化一个常量或常量表达式,即编译时就有确定的值。
2、依赖于外部类的实例对象,因此创建内部类对象时需要先创建外部类对象,再 外部类对象.new 内部类 来实例化内部类。
3、可以直接访问外部类成员。(原因:编译后内部类实际是一个单独的类文件,它的成员变量中包含了一个外部类实例对象)。
4、外部类不可直接访问内部类的成员,需要通过内部类的实例对象进行访问。
@、局部内部类、匿名内部类访问的局部变量必须定义为final,保证数据的一致性。(原因:编译后,局部变量实际是通过类的构造函数传入的,为了保证类的方法不对局部变量进行改变,所以定义为final)。
@、静态内部类:不依赖于外部类实例对象,直接实例化:new 外部类.内部类。
@、分类:
成员内部类、局部内部类、匿名内部类和静态内部类。
@、成员内部类:
1、不可包含static变量和方法,但是可以有static final 变量,但是此变量必须被初始化一个常量或常量表达式,即编译时就有确定的值。
2、依赖于外部类的实例对象,因此创建内部类对象时需要先创建外部类对象,再 外部类对象.new 内部类 来实例化内部类。
3、可以直接访问外部类成员。(原因:编译后内部类实际是一个单独的类文件,它的成员变量中包含了一个外部类实例对象)。
4、外部类不可直接访问内部类的成员,需要通过内部类的实例对象进行访问。
@、局部内部类、匿名内部类访问的局部变量必须定义为final,保证数据的一致性。(原因:编译后,局部变量实际是通过类的构造函数传入的,为了保证类的方法不对局部变量进行改变,所以定义为final)。
@、静态内部类:不依赖于外部类实例对象,直接实例化:new 外部类.内部类。
相关文章推荐
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
- 关于JAVA匿名内部类,回调,事件模式的一点讨论 VS dotNET事件模式
- Java中的内部类和匿名类
- java 内部类
- java 内部类
- java中内部类的研究
- JAVA中的内部类
- 关于JAVA匿名内部类的一点讨论.
- 浅析Java语言中的内部类
- 浅析Java语言中的内部类
- java 内部类
- Java学习,内部类和异常处理
- 浅析Java语言中的内部类
- java中的内部类
- 浅析Java语言中的内部类《转载》
- JAVA---事件适配器----用内部类,匿名类实现事件处理
- java中内部类的研究
- Java中的内部类和匿名类
- Java 学习笔记 (3) -抽象类 abstract 接口 interface 内部类 inner class 继承 extends 实现 implements 包 package
- Java中的内部类和匿名类