内部类共用概述

  • 内部类:在一个类中定义另一个完整的类
  • 内部类的做i有是给外部类提供服务的
  • 内部类编译后会生成一个独立的class文件
  • 内部类可以 访问外部类的私成员,不会破坏封装性

    内部类按照不同的修饰符和定义的位置分为以下四类

    成员内部类

    成员内部类定义在类中,和成员变量,成员方法平级,成员内部类不使用sataic修饰

  • 成员内部类创建对象需要依赖外部类的对象

  • 成员内部类不包含静态成员(静态变量,静态方法)
  • 内部类编译乘车的字节码文件格式是 外部类$成员部类.class
  • 成员内部类示例
  • 成员内部类可以继承、实现接口

    静态内部类

    静态内部类定义在类中,和成员变量,成员方法平级,成员内部使用sataic修饰

  • 静态内部类创建对象需要依赖外部类的对象

  • 静态内部类包含静态成员(静态变量,静态方法)
  • 内部类编译乘车的字节码文件格式是 外部类$静态内部类.class
  • 静态内部类示例
  • 静态内部类可以继承、实现接口

    局部内部类

    局部内部类定义在方法中,只能在方法中使用。(日常开发中几乎使用不到)

  • 局部内部类使用了方法的局部变量,那么这个局部变量默认就使用final修饰

  • 几遍内部类不能定义静态成员
  • 局部内部类只能使用默认访问权限
  • 局部内部类边缘化的格式 外部类$编号内部类.class(为什么是编号,因为可以在方法中定义多个局部内部类)

    1. public void showStaticInner(int age) {
    2. class Inners{
    3. private String name;
    4. public Inners(String name) {
    5. this.name = name;
    6. }
    7. }
    8. Inners inners = new Inners("nb");
    9. System.out.println("inners = " + inners.name);
    10. }

    匿名内部类

    匿名内部类 没有名字的对象

匿名内部类表示没有名字的局部内部类

  • 一切特征和局部内部类相同
  • 匿名内部类示例