接口:接口是开发过程中的一种规范。
面向对象的开发–>面向接口的开发
接口定义的语法:
public interface 接口名 [extends 接口] {
1.定义变量
2.可以定义静态方法
3.可以定义默认方法
4.可以定义抽象方法
}
继承:Java类是单继承 , 接口可以实现多继承。
public interface aa{
public void eat()
}
接口是不能直接被实例化的,需要它的实现类来进行实例化。
接口的实现:
implements:接口实现的关键字 (关键字!)
语法:
public class 实现类名 implements 接口名 {
(重写接口中所有的抽象方法)
}
public class bb implements aa{
}
接口的继承:
java类继承机制是单继承,接口可以实现多继承。
接口只能继承接口
extends:实现继承
语法:
接口名 extends 接口名1,接口名2,接口名3{
}
继承了父接口的接口的实现类:
必须要重写该接口以及它的父接口的所有抽象方法。
一个类可以同时实现多个接口,要把接口中所有抽象方法进行重写。
抽象类和接口的区别: (面试题)
1.定义的关键字不同,接口使用的是interface,抽象类使用的是abstract class;
2.抽象类可以定义抽象方法和普通方法,接口只能定义抽象方法(默认方法和静态方法除外);
3.接口中只能定义常量,抽象类中既可以定义常量也可以定义变量;
4.类只能继承一个抽象类, 接口直接可以实现多重继承。
Lambda表达式:
函数式接口
作用:接口的实例化
语法:
前提:接口只有一个抽象方法
接口 变量 = (参数列表) -> {//方法体}
->:(goes to)
@FunctionallInterface注解
作用:验证当前接口能不使用lambda表示进行实例化
实例化:new关键字的使用
interface a{
Person getPerson();
}
返回值类型的类:new;
通过lambda表达调用静态方法:
1.先在类中定义一个静态方法,该方法是对接口中抽象方法的实现。
2.lambda表达式语法调用该方法:
([参数列表])->getPerson();