前言

内部类如何声明使用已经介绍过了;内部类分类梳理也说了;内部类的一些高级用法也提过了。那么内部类为什么存在呢?

封装和隐藏

在内部类中可以对一系列相关属性进行封装,当把内部的权限修饰为private,那么这样就会使得封装的信息完全与外界隔绝,内部类时不可以被覆盖的,所以可以对业务逻辑进行很好的保护,而不至于担心被重写

多继承解决方案

多继承??java不是只能单继承吗?

是的没错,java为了摒弃c++中多继承的痛点,采用了单继承。虽然这样会安全很多,但是无疑会在某些情境下感觉限制。那么内部类就可以解决问题,这使得java的继承变得更加完整

NOTE: 有以下几点需要注意的地方
        1)这里的继承是指内部类继承其他类,与前面介绍的其他类继承内部类不一样
        2)多继承,不是指,内部类可以打破java的单继承定律,一个内部类可以继承多个类,这是错误的理解方式。
        这里是指可以在外部类中定义多个内部类分别继承不同的类

内部类可以任意的实现一个接口或者继承一个类,与外部类是否实现接口和继承该类没有任何关系,那么在这种情况下,在外部类中就可以任意创建多少个内部类来继承或者实现你想要的接口,而不会对外部类产生任何的影响。继而在外部类中可以通过内部类获取到继承的类或接口中的属性和方法。

闭包

内部类除了包含自己的信息外,也包含了外部类的信息,对于成员内部类来说,它会自动拥有一个外部类的引用,可以访问外部类所有的非静态的属性和方法,包括private

YY

回头看一下,现在你对内部类的认识还是那个无用、少用的内部类吗?如果不是,那么恭喜你,对内部类做了更进一步的认识。如果看完之后,没什么感觉,那么我只能说:“浪费您时间了~”