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.代理 对系统程序设计者有用,略

posted @   Pray386  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示