Java内部类基本概念

  基本概念——内部类的用处

  • 将内部类的实例在逻辑上与外部类的必须存在的一个实例绑定,如Map.Entry的Entry实例,如果脱离了所在的Map,其存在是没有意义的。
    • 也就是说,Java编译器禁止在没有相关联的外部类实例情况下,创建内部类实例。
      • 例外是static innner class (即nested class),它的实例可以独立于外部类实例创建。
      • 只有nested class内可定义static成员
    • 使用OuterClassInstance.new InnterClass(),显式创建与外部类实例关联的内部类实例。
    • 编译器为内部类隐式创建访问外部类成员的引用。(nested class没有指向外部类实例的引用)
    • 在内部类中用OuterClass.This访问外部类

语法糖

  • 定义在函数体内的内部类。local inner class.
    • 内部类的名字只有在函数体内能使用。通常,用基类或接口引用,在此函数外保持这个内部类的实例。
  • 匿名内部类。——创建内部类,但不定义内部类的名字,用基类/接口的引用保持它。创建的内部类继承了基类/实现了接口。
    •  
  • nested class的定义可以写在interface里。

内部类用于模拟多重继承

  • 如果你需要一个类在逻辑上继承多个基类,
    • 那么可以在其内部定义多个内部类。每个内部类继承其中一个基类(或实现其中一个接口)。

 

你可能感兴趣的:(java,职场,编译器,休闲)