内部类
•可以在任意作用域内定义内部类
•在类作用域里定义
–引用范围由其访问属性决定
•方法内部类
-引用范围只在方法内部
•任意作用域类
-引用范围只在该作用域内部
类内部类
•内部类对象包含隐式成员指向外部类对象
•用OuterClass.this引用外部类对象
•在外部类非静态方法外创建内部类对象,不能直接new Outer.Inner().必须先创建外部类对象,然后通过外部类对象创建。创建方式如下:
–Outero = new Outer();
–Outer.Inneroi=o.newInner();
类内部类的使用
•外部public接口+内部private实现
•隐藏实现细节
•由于是private实现,在外部类非静态方法外的所有地方,都不能创建内部类对象或使用内部类名,只能由外部类的非静态方法创建内部类对象,并返回接口来使用内部类。
匿名类
•如果在匿名类里面用到了外部类定义的变量,则这个对象必须定义成final
•匿名类没有构造函数,但可以通过实例初始化块来进行匿名类的构造
嵌套类(静态内部类)
•声明为static的内部类
•嵌套类对象没有外部类对象的this引用
•不需要通过外部类对象创建嵌套类对象
•嵌套类内不能访问外部类的非静态成员
•类似于static方法
•接口中的任何类都自动是public和static的
为什么需要内部类
•可解决“多重继承”问题哦,因为每个内部类都可以继承一个类