jdk8接口和lambda表达式

一、接口
1、接口是极端抽象类
(1)接口中的方法全是抽象方法
(2)接口中的成员变量全是常量
(3)接口中的所有成员权限都是 public
(4)修饰符 interface,不是 clas

修饰符 interface 接口名称{
public abstract 返回值类型 方法名称(可选参数信息);
其他非抽象方法内容
}

2、final在jdk7和jdk8中的区别在这里插入图片描述
3、函数式接口
接口中有且只有一个抽象方法,这种接口称为函数式接口。
下面的接口就是一个函数式接口
在这里插入图片描述
4、接口实现类
接口和实现类的关系 很像英语里A和The之间的关系

接口   是一个“泛指”  只显示接口的声明 
实现类 是一个“特指”  会额外显示其它接口的或自身的声明(实现了多个接口) 

它们在调用方法上没有什么不同,不同之处在于 “引用本身”的使用上。 


如果 你的接口只有一个实现类的话,那是看不出什么接口的方便的 
当一个接口有多实现类的时候,用接口的威力就体现出来了。

类与类,类与抽象类,类与接口,抽象类与接口,接口与接口的关系继承和描述:
1.类与类之间是继承关系,只能单继承,用 extends 关键字进行描述
2.类与抽象类之间是继承关系,只能单继承,用 extends 关键字进行描述
3.类与接口之间是实现关系,类可以同时实现多个接口,用 implements 关键字进行 描述
4.抽象类与接口之间是实现关系,用 implements 关键字进行描述 
5.接口与接口之间是继承关系,支持接口的多继承,用 extends 关键字进行描述 interfaceB

二、Lambda表达式
包含三部分:
1、一个括号内用逗号分隔的形式参数,参数是函数式接口里面方法的参数
2、一个箭头符号:->
3、方法体,可以是表达式和代码块。

Lambda表达式优点:
1.极大的简化代码。去除了很多无用的Java代码,使得代码更为简洁明了。
2.比匿名内部类更加高效。

Lambda表达式缺点:
可读性差。在代码简洁的情况下,另一方面又让大多程序员很难读懂。

// Java 8之前:
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(“Before Java8, too much code for too little to do”);
}
}).start();

//Java 8 Lambda表达式:
new Thread( () -> System.out.println(“In Java8, Lambda expression rocks !!”) ).start();

猜你喜欢

转载自blog.csdn.net/weixin_44603382/article/details/86698393