内部类
成员内部类
场景一:看到成员两个字,我们首先就想到了同样含有”成员“的成员变量,我们知道成员变量是定义在类中,所有方法(函数)之外的变量;那么成员内部类是否和成员变量处于相同的位置呢?
1)是的,成员内部类定义在一个类的里面(由此可以访问其外部类的私有属性),所有函数(方法)的外面。
2)private关键字可以修饰成员内部类,表示这个内部类只能在其外部类内部使用。
3)内部类会生成独立的.class文件。
场景二:既然成员内部类这么特殊,那么如何创建成员内部类的对象呢?
1)在其外部类内部创建内部类的对象,直接创建即可。
2)在非外部类内部创建内部类的对象,需要先创建其外部类对象(内部类是可以访问其外部类的成员变量的,但是每个外部类对象的成员变量属性可能是不一致的,内部类访问外部类成员变量属性的时候,我们需要确认外部类成员变量的值),再创建内部类对象。
静态内部类
我们之前有说过,static关键字是不能去修饰类的对不对?是的,但是static可以修饰内部类,成为静态内部类。
那么成员内部类与静态内部类在使用上有什么区别呢?
我们先看下成员内部类和静态内部类在访问外部类成员上的不同:成员内部类是可以访问其外部类的所有静态以及非静态成员的,但是不能在一个成员内部类中定义静态方法(初始化时间冲突);但是静态内部类只能访问其外部类的静态成员;
场景二:创建静态内部类的对象
1)在外部类中创建静态内部类的对象,与成员内部类并无区别,直接创建即可。
2)在外部类的外部创建静态内部类的对象,可以使用“外部类.内部类”的方式创建。
局部内部类
看到局部两个字,会不会首先想到‘局部变量’呢?所谓局部变量,指得是定义在方法内部的变量。我们今天要说的局部内部类也与之类似,局部内部类,指得就是定义在方法内部的类。我头先看到的时候很惊讶,方法内部还能定义一个类吗?接下来我们一起来看下局部内部类到底是什么,怎么用它,什么时候要用到它。
匿名内部类
原文:https://www.cnblogs.com/LearnSB/p/13245941.html