参考文章
https://www.cnblogs.com/chengdabelief/p/6204281.html
https://www.cnblogs.com/Anidot/articles/7680375.html
Java中的接口是一种比较特殊的抽象类
按原理来说,接口中可以定义成员变量,默认声明为public static final
接口中只有方法的signature,没有body部分
java8开始,允许接口中有静态方法
为什么变量要用final 和static修饰?
final:接口比抽象类更加抽象,接口中的方法和变量都是不可更改的。接口是一种协议,所有实现接口的类都必须遵守该协议,如果每个实现接口的类都可以更改变量的值,则违反了OCP原则
static:
Java不支持多继承,但是一个类可是现实多个接口。我们假设有两个接口A和B,而类C实现了接口A和B。假设,此时,A和B中都有一个变量N,如果N不是static类型的,那么在C中该如何区分N到底是A的还是B的呢?而,如果是static类型的,我们可以通过A.N和B.N来区别调用A或者B中的成员变量N。
基于Java类介绍接口
Java中的类都是单继承的,但是接口可以是多继承的,可以继承多个接口
解释:
不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承那一个呢?
但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以一个接口可以继承多个接口
1.如果一个类实现了接口,则必须实现其中的所有方法
2.接口中的方法默认是public,在实现的时候要用public来修饰
2.一个接口可以extends多个接口,不能implement任何接口
3.一个类只可以extends一个父类,implement多个接口
4.如果接口继承的多个接口中有相同的方法签名,则实现该接口的类只需要完成一此该方法的具体实现,而编译器不会提示出错