在Java中,把类分成了三种:
1.普通类:使用class定义且不含有抽象方法的类,只有具体的实现
2.抽象类:使用abstract class定义的类,可含有/不含有抽象方法,具体的实现和规范(抽象方法)都有,注:不能实例化(new)这个抽象类,只能靠子类去实现(约束)它
3.接口:使用interface定义的类,只有规范(抽象方法)
所谓接口,就是规范,定义的是一组规则,可以理解为现实中"如果你....必须....",就好比"如果你犯罪了,必须坐牢";"如果你做错了,必须受到惩罚"等等,就好比我们的法律,制定好了之后每个人都要遵循.接口的本质是契约(约束)它是对抽象的抽象.在以前的学习中我们知道java类只有单继承,没有多继承,但学习了接口之后,原来只能实现单继承的类实现接口后就可以实现多继承了.而实现了接口后的类都必须重写接口中的方法,我们来看一段代码实现:
首先是接口1(UserService):
/最主要要学习抽象的思维 //定义的关键字interface,接口都需要有实现类 public interface UserService { //接口中的所有定义的属性其实都是静态常量(public static final隐藏了) /*public static final*/ int AGE = 99;//很少定义属性 //接口中的所有定义的方法其实都是抽象的(public abstract隐藏了) /*public abstract */void add(String name); /*public abstract */void delete(String name); }
然后是接口2(TimeSevice):
public interface TimeService { void timer(); }
最后是实现类(ServiceImpl):
//抽象类:extends 单继承 implement接口 //只能单继承的类通过实现接口后可以实现多继承 //实现了接口的类,必须要重写接口中的方法 public class ServiceImpl implements UserService,TimeService{ @Override public void add(String name) { } @Override public void delete(String name) { } @Override public void timer() { } }
最后我们对接口做一个总结:
1.接口的本质是一个约束,是对抽象的抽象
2.他的具体用法是,定义一些方法,让不同的人实现
3.定义的方法都是带public abstract修饰符的,可以隐藏
4.定义的常量(属性)都是带public static final,可以隐藏.定义后可直接使用,但很少在接口中定义属性.
5.接口不是类,所以接口不能被实例化(new),且没有构造方法
6.通过implement关键字可以实现多个接口,实现"多继承"
7.类实现了接口后,必须要重写接口中所有方法.