Java 接口、lambda表达式与内部类
1.接口 接口不是类,而是对类的一组需求描述。
2.可以为接口方法提供一个默认实现。必须用default修饰符标记这样一个方法。
3.解决默认方法冲突
①超类优先
②接口冲突 如果一个超接口提供了一个默认方法,另一个接口提供了一个同名且参数类型相同的方法,必须覆盖这个方法来解决冲突。
3.回调
指出某个特定事件发生时应该采取的动作。
4.对象克隆 clone只能逐个域进行拷贝,如果对象包含子对象的引用,会导致拷贝域得到相同子对象的另一个引用。
5.lambda 表达式 一个可传递的代码块,以及必须传入代码的变量规范
(String first, String second) ->
{ } 如果没有参数,仍要提供空括号 如果可以推导出一个lambda表达式的参数类型,则可以忽略其类型
如果方法只有一个参数,而且这个参数的类型可以推导得出,那么甚至可以省略小括号。 无需指定返回值,但是如果lambda表达式只在某些分支有返回值,而在另一些分支没有返回值,这是不合法的。
6.lambda表达式能转换为函数式接口
方法引用:Timer t = new Timer(1000,System.out::println);
构造器引用:
7.变量作用域 lambda表达式捕获的变量必须实际上是最终变量。
在lambda中,只能引用不会改变的变量,且如果这个变量可以在外部改变,也是不合法的
8.处理lambda表达式 写出一个repeat方法,要接受这个lambda表达式,需要选择(偶尔可能需要提供)一个函数式接口。可自行查找“常用函数式接口”或“基本类型的函数式接口”。
9.内部类 定义在另一个类中的类,可以引用外围类的方法和实例域
10.内部类的特殊语法规则 使用外围类引用:OuterClass.this 在外围类的作用域之外,可以这样引用内部类:OuterClass.InnerClass
11.内部类的优势 内部类可以访问外围类的私有数据
12.局部内部类 方法中可以定义一个局部类,这个局部类不能在外部类中访问,除了这个方法。
13.由外部方法访问变量 方法中添加参数,这样外部类就不需要保存参数。
14.匿名内部类 假如只创建这个类的一个对象,就不必命名了。匿名内部类用lambda表示更好
15.静态内部类 将Pair定义为ArrayAlg的内部公有类,因为在Pari对象中不需要引用外围类的对象时,因此可以将这个内部类声明为static
16.代理 对系统程序设计者有用,略
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!