JavaSE进阶-day03
1.内部类
1.1 基本概述
概述: 定义在"类的内部"的类,就称之为"内部类". 分类: 局部内部类: 放在方法内部的"内部类",就是局部内部类 成员内部类: 方法类中方法外的"内部类",就是成员内部类.
1.2 常规内部类(了解)
① 成员内部类
概述: 成员内部类是放在"类中方法外"的内部类. 格式: 外部类.内部类 对象名 = new 外部类().new 内部类(); 注意: 1:实际开发中,一般不用成员内部类 2:如果要用,一般也会把内部类私有化
② 局部内部类
概述: 局部内部类是放在"方法中"的内部类 作用: 放在方法中的内部类,方法执行完毕之后,就会被销毁,可以节省内存.
1.3 匿名内部类(掌握)
概述: 匿名内部类,就是"局部内部类"的简化格式. 格式: new 父类/父接口(){ //重写方法 } 注意: 匿名内部类 -> 本质上是一个"实现类父类或父接口的子类的对象"
2.Lambda表达式
2.1 基本概述
概述: Lambda表达式就是"匿名内部类"的简化格式. 依据"可推断可省略"原则,进行优化. 快捷: 鼠标点击灰色区域 -> Alt + 回车 -> 回车 格式: (参数) -> { 方法体代码 }
2.2 语法特点
语法要求: 1:父层次必须是"接口" 2:父接口中"有且仅有一个抽象方法" 省略规则: 1:参数类型可以省略. 2:如果参数只有一个,则()可以省略. 3:如果代码只有一句,则"{},分好,return"都可以省略
2.3 Lambda和匿名内部类的区别(了解)
所需类型: Lambda: 只能是接口 匿名内部类: 啥都行. 要求不同: Lambda: 接口"有且仅有一个抽象方法" 匿名内部类: 没要求. 编译不同: Lambda: 编译后不会产生class文件(会在内存中产生class文件,用完之后立即销毁). 匿名内部类: 会产生class文件,文件名"外部类$xxx.class"