java四大内部类+lambda+函数式接口+函数式编程

 大纲

java内部类的四大作用_奋斗的bigHead的博客-CSDN博客

 (四大内部类:匿名内部类+成员内部类+局部内部类+静态内部类)

  (lambda+函数式接口+函数式编程)

1.为什么学习内部类以及它的好处:

(1)在学习java的时候,一个儿子只能有一个父亲,哈哈,继承只能是单继承,那么内部类就是java提供的多继承的解决方案(干爹)。每一个内部类都可以独立的继承一个接口实现。

(2)语法糖,比如书写线程池代码可以大大简化书写,或者当一个类或者接口只服务于一个类时,无需去继承或者实现接口,写一个内部类,在里面重写方法就可以了。

(3)事件驱动程序。回调函数

(4) 当某个类只为一个类提供服务时,可以将这个类定义成内部类,可以解决接口或者抽象类不能实例化的问题。

(5)Java 从 Java 8 开始支持 lambda 表达式,这才算是支持函数式编程。函数式编程有什么好处呢?如果将其与依赖注入技术结合,可以很好地遵守开闭原则,实现控制反转,便于异步调用等等。在事件驱动模型中常常应用这一技术。

Java 函数式编程与事件驱动模式_java事件驱动_暗诺星刻的博客-CSDN博客

Java事件驱动模型框架实现_java 事件框架_大林子先森的博客-CSDN博客

java 事件驱动模式_事件驱动模型实例详解(Java篇)_苟全性命的博客-CSDN博客

观察者模式与事件监听器模式--java设计模式扫盲_java 监听事件和 观察者模式的区别_打不死的小欣的博客-CSDN博客

2.内部类编译过程

内部类虽然和外部类写在同一个java文件中, 但是编译完成后, 还是生成各自的class文件,内部类通过this访问外部类的成员。

1 编译器自动为内部类添加一个成员变量, 这个成员变量的类型和外部类的类型相同, 这个成员变量就是指向外部类对象(this)的引用;

2 编译器自动为内部类的构造方法添加一个参数, 参数的类型是外部类的类型, 在构造方法内部使用这个参数为内部类中添加的成员变量赋值;

3 在调用内部类的构造函数初始化内部类对象时,会默认传入外部类的引用。

编译指令 javac classpath(.java文件的路径)
反编译指令 javap -v(详细信息) classpath(.class文件的路径)
 

3.四大内部类

写一个类的成员方法内的叫匿名内部类

写在成员方法外和成员方法同等级的叫做成员内部类

  • 成员内部类:和成员变量一个级别

  • 局部内部类:在方法里的内部类(方法域内生效 或者 方法内某一段代码块域内生效)

你可能感兴趣的:(java高级,java,开发语言)