增强型接口

从JDK1.8开始,Java中引入了一些新功能,而其中很多功能都是为了接口而设计的,下面我们来看看接口的一些新功能。


1、可以在接口中定义用default修饰的普通方法,可以在实现它的子类中覆写。

看例子:

interface Ime{
	public default void fun() {
		System.out.println(1);
	}
	void fun1();
}

class Imeage implements Ime{
	public void fun() {
		System.out.println("fun");
	}
	@Override
	public void fun1() {
		System.out.println(10);
	}
}
public class Test{
	public static void main(String[] args) {
		Ime a = new Imeage();
		a.fun();
		a.fun1();
	}
}

结果是:

fun
10

如果在子类中不对fun()方法进行覆写,则结果是:

1
10


2.可以在接口中定义静态方法,由类名直接调用。

看例子:

interface Ime{
	public static void fun() {
		System.out.println(3);
	}
	void fun1();
}
public class Test{
	public static void main(String[] args) {
		Ime.fun();
	}
}

结果:3

由以上两点可以看到接口和抽象类的区别已经基本消弭,最主要的区别就是抽象类用于单继承,而接口可以实现多继承。


3.Lambda表达式

在JDK的1.8更新中同样引进了函数编程的概念,使用它设计的代码会更加简洁。当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口。
Lambda表达式实现的要求:接口中只能有一个方法。一般用Annotation参数 @FunctionalInterface声明。
看例子:

@FunctionalInterface
interface Ime{
	void fun();
}

public class Test{
	public static void main(String[] args) {
		Ime a = ()->System.out.println("Lambda");
		a.fun();
	}
}

结果:Lambda
如果需要执行多条语句时:

public class Test{
	public static void main(String[] args) {
		Ime a = ()->{System.out.println("Lambda");
			System.out.println("!!!");
			};
		a.fun();
	}
}

结果:

Lambda
!!!

如果方法是进行数据的返回,可以不用写return。
看例子:

@FunctionalInterface
interface Ime{
	int add(int x, int y);
}

public class Test{
	public static void main(String[] args) {
		Ime a = (x, y) -> x + y;
		System.out.println(a.add(10, 20));
	}
}

结果是:30

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值