接口是啥?他和普通的类有什么区别?
作为一个经常用ssm来做curd的码农,那么对接口的印象就是上学学的理念和实际操作中,各种dao层和service层的接口,然后实现这些接口写具体的业务代码。
在我看来,接口更像是架构师为了定义整个框架所设计的。啊,这个系统要XXX接口传入XX,返回XX,然后逻辑给开发写。嗯,就是一种定义,一种规范,在常见框架中也是为了能重写其中重要的方法,框架通过反射找到实现该接口的类进行调用。
那么从理论来讲,接口具有以下特征(面试题也经常出现):
- 接口是由常量和抽象方法组成的
- 接口可以继承接口,并且可以继承多个(当然两个爸爸的方法冲突,可是编译不通过的)
- 接口中的方法必须是public修饰的,毕竟是个规范强制实现者重写方法的
随后又看到有博客写的例子中有 实现的方法
interface A{ default String fun(){ return "哇哦~"; }}interface A{ static String fun(){ return "哇哦~"; }}
自己试了一下,是可行的,颠覆了我对接口的理解,后来百了下,原来jdk8让接口中的方法可以被default 和static修饰。
重点是,假如B接口也有fun方法,当C接口继承AB两个接口时,需要重写该方法。