interface(接口)

如果抽象类中所有的方法都是抽象方法,就把抽象类变成了接口用interface来表示。类与接口之间通过implements来表示实现,
如果一个普通类实现接口就要把接口中所有的抽象方法进行重写,如果不想都重写就要把普通类编程抽象类。接口与接口之间允许多继承
接口中都是抽象方法?不一定 如果jdk1.8以前接口中只能有抽象方法,从jdk1.8开始就允许接口中可以去定义实体类
接口能定义构造方法?接口中没有构造方法,就无法创建对象
任何类型的对象传值给接口,编译都不检测,运行是检测类与接口之间是否是实现关系
接口与接口之间多继承,类与接口是多实现?可以
接口中允许定义属性和方法?
Illegal modifier for the interface field Shape.i; only public, static & final are permitted//属性
Illegal modifier for the interface method ma; only public, abstract, default, static and strictfp are permitted//抽象方法(默认被static&public共同修饰)

package cn.itcast.day11;
/*
 * 接口---interface---不再是类了
 * */
public class InterfaceDemo2 {
	public static void main(String[] args) {
//		Lamda表达式:使用前提是接口中有且仅有一个抽象方法
		//(参数列表)->{重写的方法体}
//	Calc c=	(x,y)->{return x>y?x:y;};
//		Calc c=(int x,int y)->x>y?x:y;
//		如果方法体只有一句话就可以省略{}以及return
//		由前面抽象方法的参数类型可以推到最后面需要的类型
		Calc c=(x,y)->x>y?x:y;
	System.out.println(c.getMax(6, 8));
	}
}
//计算器
//函数式接口---只有一个抽象方法--函数式编程
@FunctionalInterface
interface Calc{
	//求和
	//实体方法--默认方法
	public default int getSum(int m,int n) {
		return n+m;
	}
	//求积
	//静态方法---实体方法
	public static int getJi(int m,int n) {
		return n*m;
	}
	//抽象方法
	int getMax(int m,int n);
}

JDK1.8在接口中的新特性
允许定义实体方法–通过static或者default修饰完成的
Lambda表达式—用于重写(接口)抽象方法,规定接口中只能有一个抽象方法,
这个接口就叫做函数表达式接口----函数式编程



import java.util.Arrays;

/*
 * 接口---interface---不再是类了
 * */
public class InterfaceDemo3 {
	public static void main(String[] args) {
		int [] arr={2,5,416,415,8,2,6,1};
//	Array a=(int []arr)->{ Arrays.sort(arr);};	
//	Array a=(int []arr)-> Arrays.sort(arr);	
//	Array a=(arr)->Arrays.sort(arr);	
//	Array a=arr->Arrays.sort(arr);	
//		从前到后都只是一个参数的数据参与操作
//		::---的静态方法
	Array a=Arrays::sort;	
	a.sort(arr);
	System.out.println(Arrays.toString(arr));
}
}
interface Array{
	void sort(int [] arr);
}

接口–模板、规范

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值