什么是内部类?
内部类就是写在外部类中的类,或者类的方法中的类。
为什么要使用内部类?
每一个内部类都可以单独实现一个接口,
外部类是否实现了接口对内部类继承实现没有影响。
内部类使多重继承的方案变得完整。
使用内部类的一些注意事项
//在内部类内调用外部类的方法
//如果与外部类有同名方法,需要outclass.this.method
//如果不是同名方法可以直接调用
内部类实例化的方法
Outclass o = new Outclass();
Outclass.Innerclass i = o.new Innerclass(); //内部类的创建对象的方式
外部类无法调用内部类私有的方法属性
1,成员内部类
成员内部类内部不允许存在任何static变量或方法
正如成员方法中不能有任何静态属性
成员内部类可以访问外部类所有的变量和方法,
包括静态和非静态,私有和公有。成员内部类依赖于外部类的实例
,它的创建方式外部类实例.new 内部类()
(成员方法与对象相关、静态属性与类有关)
成员内部类是依附外部类的,只有创建了外部类才能创建内部类。
2,静态内部类
静态内部类不可以使用任何外部类的非static类(包括属性和方法)
,但可以存在自己的成员变量。
3,方法内部类
方法内部类不允许使用访问权限修饰符(public、private、protected)均不允许。
方法内部类对外部完全隐藏
方法内部类如果想要使用方法形参,该形参必须使用final声明
4,匿名内部类
匿名内部类就是一个没有名字的方法内部类,
因此特点和方法与方法内部类完全一致,除此之外,还有自己的特点:
1.匿名内部类必须继承一个抽象类或者实现一个接口。
2.匿名内部类没有类名,因此没有构造方法。
内部类可以直接访问外部类的元素(包括私有域)—外部类在内部类之前创建,创建内部类时会将外部类的对象传入
内部类是一个相对独立的个体,与外部类没有关系。