1,接口的基本定义格式:
public interface 接口名称{
//组成部分:可以包含有抽象,静态,默认,私有方法,常量。
}
2.抽象方法
定义:public abstract 返回值 方法名 (参数);直接结束,无大括号
注意:修饰符可以不写,如果写必须是 public abstract
3,接口实现类;使用定义好
的接口,必须有一个接口的实现类
格式为:public class 实现类名称 implements 接口名称{
//一定要覆盖重写(override)所有的抽象方法==》将接口中的抽象方法抄过来,去掉abstract,加速大括号方法体
}
3,接口与实现类的使用;
创建:接口名称 引用名 =new 实现类名称();
调用:引用名 抽象方法名(参数)
package helloworld;
public interface onlyone {//接口
public abstract void eat();//抽象方法
public abstract void sleep();//抽象方法
}
public class hero implements onlyone {//接口實現類
public void eat() {
System.out.println("猫吃鱼");
}
public void sleep() {
System.out.println("猫睡觉");
}
public void doing() {
System.out.println("猫");
}
}
public static void main(String[] args) throws IOException {
onlyone cat=new hero();
cat.eat();
cat.sleep();
//cat.doing();接口實現類里有,但也無法調用,,由接口訣定,這就是接口隔離
}
使用接口作为参数可传入不同的接口实现类
public static void method(onlyone one) {
one.eat();
one.sleep();
}
4.Lambda表达式:本身代表了该怎么做这件事,没有对象的概念在里面(不用在使用接口实现类)
public interface onlyone {//接口
public abstract int sum(int a,int b);//抽象方法
//public abstract void sleep();//抽象方法
}
public static void main(String[] args) throws IOException {
method((a,b)->a+b);
}
public static void method(onlyone one) {
int result=one.sum(100,200);
System.out.println(result);
}
表达式为:(a,b)->a+b
method方法需要一个onlyone接口类型的参数
Lambda表达式就是充当了这个参数,->表示一个指向的动作,箭头后面代表了拿到参数后具体做什么事,在调用方法时,参数类型是函数式接口,所以Lambda可以判断出是那个接口