内部类的分类:
1.成员内部类 2. 私有内部类 3. 静态内部类4. 局部内部类 5. 匿名内部类
1.1成员内部类
成员内部类 : 内部类定义在-------》外部类的成员位置 可以被成员修饰符所修饰,可以继承其他父类,实现需要的接口,具有成员的特点,具有类的特点 特点 : 在成员内部类中只能定义--------》非静态的成员内容,除了静态的常量 在成员内部类中可以直接使用所在外部类的成员,包括私有的 在所在外部类中需要通过——————————》成员内部类的对象——————访问其成员(包括私有成员),可以通过——————》类名访问其————》静态的常量 在其他类中需要 通过————————》外部类创建成员内部类对象,通过成员内部类对象————————》访问其成员
2.私有内部类
私有内部类 : 被private修饰的成员内部类 私有内部类中可以直接使用外部类的成员,包括私有的 在所在外部类中,通过私有内部类的对象访问其成员 其他类中无法使用私有内部类
3.静态内部类
静态内部类 : 被static修饰的内部类 静态内部类中可以根据需求定义静态|非静态的成员 在静态内部类中可以直接使用所在外部类的静态内容,需要通过外部类的对象访问其成员 在静内类 直接用静内容 外部类对象--------》成员 在所在外部类中可以通过类名访问静态内部类中静态内容,需要通过对象访问静态内部类中的成员 在外部类 通过对象访问------->静类静内容 在其他类中可以通过外部类类名.内部类类名.静态内容访问静态内部类中的静态内容 在其他类 通过外类名.内类名.静内容------访问---》静态内类静内容 在其他类中可以通过new 外部类类名.内部类类名()的内部类对象访问静态内部类中的成员内容 在其他类 通过 new 外类名.内类名()内对象------》静成员
4.局部内部类
局部内部类 : 定义在方法中,内部类为------》局部内部类 局部内部类中只能定义——————————》非静态的成员内容,除了静态的常量 在局部内部类中可以使用---》所在外部类的成员 局部内部类中如果一旦使用所在方法的局部变量(参数),这个局部变量————————》必须为常量 jdk7及之前 : 要求必须手动被final修饰 jdk8及之后 : 默认被final修饰 只能在所在的方法中通过对象访问局部内部类的成员,在外部类中的其他方法中|其他类中都无法使用局部内部类
5.匿名内部类
匿名内部类 : 简化一些满足条件要求的实现类|子类,将定义实现类重写方法+创建实现类对象两步合并成一步 1)类没有自己本身作用 2)实现类|子类只在当前使用一次,不会重复使用多次 语法 : new 接口|抽象类(){--->实现类|子类类体 重写方法.... };