内部类
2016-05-01 17:43
211 查看
内部类可分为成员内部类、局部内部类和匿名内部类
成员内部类:内部类相当于外部类的一个成员,编译后的class文件格式--->外部类$内部类,包括实例内部类和静态内部类
实例内部类
可用修饰符--->public、缺省、protected、private、abstract、final
特点--->①创建内部类实例时必须先创建外部类实例②内部类可以直接访问外部类实例的成员变量和成员方法③外部类必须通过内部类的实例去访问内部类④实例内部类不能有静态成员⑤当实例内部类和外部类有同名的成员变量时在内部类中使用this表示内部类成员,使用外部类.this表示外部类成员
静态内部类
可用修饰符--->public、缺省、protected、private、abstract、final+static
特点--->①创建内部类实例时不需先创建外部类实例②内部类可以直接访问外部类实例的静态变量和静态方法而实例变量和实例方法需要实例化外部类③外部类可以通过全类名(外部类.内部类).xxx访问内部类的静态成员④静态内部类可以有静态成员⑤当静态内部类和外部类有同名的静态成员变量时在内部类中使用外部类.xxx表示外部类静态成员
局部内部类:内部类相当于外部类方法中的局部变量,只能定义在方法中
编译后的class文件格式--->外部类$数字$内部类
可用修饰符--->缺省、abstract、final
特点--->①只能在当前方法中访问②局部内部类不能有静态成员③不能用public、protected、private修饰④外部类和内部类互相访问方式同实例内部类⑤可以访问方法中final类型参数
匿名内部类:一种特殊的没有名字的内部类,跟随外部类实例一起创建
编译后的class文件格式--->外部类$数字
可用修饰符--->无
特点--->①匿名内部类没有构造方法,只能创建一次实例,初始化时会调用外部类构造方法②可以在内部类中提供一段{}实例化码, 该代码会在调用完外部类构造方法后执行③匿名内部类可以在外部类的方法中或在声明变量时定义,如果在方法中定义可以访问方法的final类型变量和参数④匿名内部类除了可以继承外部类外还能实现接口⑤外部类和内部了互相访问方式同局部内部类
内部类的继承:
要求:一个类继承一个内部类要求这个类的实例必须自动引用外部类的实例
实现方法:在该类构造方法中通过参数传递一个外部类引用,在构造方法中通过外部类引用.super语句建立该类与外部类之间的联系
成员内部类:内部类相当于外部类的一个成员,编译后的class文件格式--->外部类$内部类,包括实例内部类和静态内部类
实例内部类
可用修饰符--->public、缺省、protected、private、abstract、final
特点--->①创建内部类实例时必须先创建外部类实例②内部类可以直接访问外部类实例的成员变量和成员方法③外部类必须通过内部类的实例去访问内部类④实例内部类不能有静态成员⑤当实例内部类和外部类有同名的成员变量时在内部类中使用this表示内部类成员,使用外部类.this表示外部类成员
静态内部类
可用修饰符--->public、缺省、protected、private、abstract、final+static
特点--->①创建内部类实例时不需先创建外部类实例②内部类可以直接访问外部类实例的静态变量和静态方法而实例变量和实例方法需要实例化外部类③外部类可以通过全类名(外部类.内部类).xxx访问内部类的静态成员④静态内部类可以有静态成员⑤当静态内部类和外部类有同名的静态成员变量时在内部类中使用外部类.xxx表示外部类静态成员
局部内部类:内部类相当于外部类方法中的局部变量,只能定义在方法中
编译后的class文件格式--->外部类$数字$内部类
可用修饰符--->缺省、abstract、final
特点--->①只能在当前方法中访问②局部内部类不能有静态成员③不能用public、protected、private修饰④外部类和内部类互相访问方式同实例内部类⑤可以访问方法中final类型参数
匿名内部类:一种特殊的没有名字的内部类,跟随外部类实例一起创建
编译后的class文件格式--->外部类$数字
可用修饰符--->无
特点--->①匿名内部类没有构造方法,只能创建一次实例,初始化时会调用外部类构造方法②可以在内部类中提供一段{}实例化码, 该代码会在调用完外部类构造方法后执行③匿名内部类可以在外部类的方法中或在声明变量时定义,如果在方法中定义可以访问方法的final类型变量和参数④匿名内部类除了可以继承外部类外还能实现接口⑤外部类和内部了互相访问方式同局部内部类
内部类的继承:
要求:一个类继承一个内部类要求这个类的实例必须自动引用外部类的实例
实现方法:在该类构造方法中通过参数传递一个外部类引用,在构造方法中通过外部类引用.super语句建立该类与外部类之间的联系
相关文章推荐
- 【Linux学习笔记五】用户与用户组管理
- eclipse中如何远程java debug配置
- Java 中 String 的构造方法
- 第十一章 springboot + mongodb(简单查询)
- 在安装apache时遇到的困难
- 词法结构
- poj 1163 The Triangle --dp
- Django 的 CSRF 保护机制
- JAVA——集合(Set)
- 简单的Kafka0.8消费者程序
- eclipse luna4.4配置beans.xml和hibernate.cfg.xml提示类的包路径信息
- Java千百问_06数据结构(004)_java数据类型的字面值是什么
- 安卓活动的启动方式
- RelativeLayout不能调用measure去直接测量子元素
- POJ2236 Wireless Network 并查集
- Java Socket应用
- iOS - 计步器
- IMF传奇行动第85课:Spark Streaming第四课:基于HDFS的Spark Streaming案例实战和内幕源码解密
- 20145328 《Java程序设计》实验四实验报告
- Java实现服务器端动态流断点续传下载支持