您的位置:首页 > 其它

内部类

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语句建立该类与外部类之间的联系
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: