如果说,一个接口必须实现的抽象方法有且只有一个的话,那么这个接口就是函数式接口。
//这个接口中,有且只有一个方法,是实现类必须实现的,所以这个是函数式接口。
interface Test1{
void sayHello();
}
//这个接口中,实现类必须实现的方法有2个,所以这个不是一个函数式接口。
interface Test2{
void sayHello();
void sayByeBye();
}
//这个接口中,实现类必须实现的方法有0个,所以这个不是一个函数式接口。
interface Test3{
}
//在这个接口中,虽然本身没有定义任何方法,但是因为接口继承了Test1接口从而得到了一个抽象方法,所以是一个函数式接口。
interface Test4 extends Test1{
}
//在这个接口中,虽然定义了2个方法,但是有一个是默认实现了的,所以必须实现的方法只有1个,所以这个是函数式接口。
interface Test5{
void sayHello();
default void sayByeBye(){
System.out.print("你好,再见");
}
}
//在这个接口中,toString()方法本身是Object的,所以有且只有一个方法要重写,所以这个是一个函数式接口。
interface Test6{
void sayHello();
String toString();
}