java进阶四(内部类和Lambda)
2021/9/12 12:04:50
本文主要是介绍java进阶四(内部类和Lambda),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JavaSE进阶第四天
课程大纲:
- 内部类
- 匿名内部类 【掌握】
- Lambda表达式
类的成员位置可以直接定义的内容:
1、成员变量 2、构造方法 3、成员方法 4、代码块(构造代码块、静态代码块) 5、成员内部类(内部接口、内部枚举)
一.内部类
1.什么是内部类
一个类定义在另一个类的内部,那么定义在内部的那个类,就是内部类A类定义在B类中,那么A类就是内部类
2.内部类的分类
成员内部类:定义在成员位置,类中方法外 局部内部类:定义在局部位置,方法中 * 匿名内部类是一种特殊的局部内部类 class A { // 成员内部类 class B { } public void show(){ // 局部内部类 class C { } } }
3. 成员内部类
注意事项: 1.外部类要使用内部类中的成员,不许创建内部类的对象再调用 创建对象的格式: 外部类名.内部类名 对象名= new 外部类对象().new 内部类对象(); A.B ab = new A().new B(); 2.内部类可以直接使用所在外部类的成员,即使是私有的 3.成员内部类也是会生成字节码文件的,字节码文件名称格式: 外部类名$内部类名.class A$B.class 4.内部类可以被private和static修饰,被private修饰时,只能在外部类中创建对象来调用内部类里面的方法; 被static修饰时,只能通过 外部类名.内部类名 对象名 = new 外部类名.内部类名(); 调用; 如果是调用静态内部类里面的静态方法就可以通过 外部类.内部类.内部类方法();调用
4.局部内部类
局部内部类只能在其所在的方法中使用,出了方法就无法使用. 局部内部类也是会生成字节码文件的,字节码文件名称格式: 外部类名$编号内部类名.class A$1B.class Outer$1Inner.class Outer$2Inner.class 编写位置:方法中 访问方式: 只能在方法中,创建对象并访问
5.匿名内部类
5.1 什么是匿名内部类
是一个没有名字的内部类,而且是局部内部类,意味着匿名内部类都是在方法中使用的
5.2 匿名内部类的使用前提
有一个类或者一个接口
5.3 匿名内部类的格式
new 父类/接口(){ // 对父类中的方法重写 // 或者 // 对接口中的方法实现 };
5.4 匿名内部类的原理
在创建类的子类对象,或者创建接口的实现类对象
5.5 匿名内部类的优点
简化操作,将继承/实现、方法重写、对象创建、调用方法一步搞定
二.Lambda表达式
2.1函数式编程思想
Lambda表达式就是函数式编程思想的一种体现 关注点更加明确,方法具体做什么,省略了其他的复杂语法,能省则省。 JDK8的新特性
2.2 Lambda表达式的作用(优点)
简化代码
2.3 Lambda的标准格式
() -> {} 格式解析: ():接口中的抽象方法的小括号,方法的形参 ->:传递的固定符号,将小括号中的形参接收的实参传递给方法体 {}:重写了抽象方法之后的方法体内容 Lambda表达式相当于是接口的实现类对象,是简化了匿名内部类
2.4 Lambda的简化格式
使用前提 1、只能是接口 2、该接口中有且只有一个抽象方法 满足以上两个条件的接口:函数式接口 @FunctionalInterface注解可以检测接口是否是一个函数式接口 提问:函数式接口中除了仅有的一个抽象方法之外,还能否有默认方法或者静态方法或者私有方法? 答:其他方法可以任意有,只对抽象方法有要求 注意事项:如果Lambda所操作的接口中的方法,有返回值,一定要通过return语句,将结果返回,否则会出现编译错误
2.5 Lambda和匿名内部类的区别
1、使用前提不同
Lambda前提要求是有一个接口,而且要求接口中的抽象方法有且只有一个(要求是函数式接口) 匿名内部类前提要求是有一个类或者接口,对接口中的抽象方法的个数没有要求
2、字节码文件不同
Lambda不会生成字节码文件的,在运行的过程中在内存里动态生成,在硬盘中没有 匿名内部类会生成字节码文件,在硬盘上可以看到这个字节码文件
这篇关于java进阶四(内部类和Lambda)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API