1、在Java中,最小的单元是类,接口就是一个特殊的类;
Java的接口规范:用于定义一组抽象方法,表示某一类事物必须具有的功能,要求实现类必须要实现该接口并提供方法实现;
定义类的语法[public] class 类名{}
定义接口的方法[public] interface 接口名{}
接口起名:表示具有某些能力的,习惯用able结尾;
2、接口存在的成员
1):接口中没有构造器;不能创建对象;接口中,不能定义普通方法;
2):接口中定义的字段,实质是全局静态常量;默认使用 public static final 修饰;
3):接口中定义的方法是公共的抽象方法,默认的使用public abstract修饰方法;
一般的,在定义接口方法时,不使用修饰符
4):接口中定义的内部类,都是公共的静态内部类;默认使用public static修饰内部类;
5):接口只能继承接口,不能继承类;接口支持多继承;
3、标志接口:
接口中没有没有任何成员,就仅仅只是一个标志;其他的类实现该接口 ,就属于该家族;
4、接口的实现
接口仅仅定义了 某一些事物应该具备的某些功能,但是并没有提供任何实现;
此时,必须提供类,再让类去实现接口,比覆盖接口中的方法,从而实现接口中的功能;
语法:[修饰符] 类名 extends 父类 implements 接口1,接口2{ };
类实现多个接口,弥补了类的单继承关系;
接口和实现类之间的关系,称为实现关系;使用implements来表示;(有时候也称为继承关系)
也可以理解为接口是实现类的父类;实现类就是接口类的子类;
5、面向接口编程
接口 变量 = 创建实现类对象 // 多态思想;
接口和实现类的多态关系才是使用最多的;
6、接口和抽象类的区别
相同点:
都应当位于继承的顶端,取用被其他类实现或继承;
都不能实例化;
都可以定义抽象方法,其子类、实现类必须复写这些方法;
不同点:
接口没有构造方法,抽象类有构造方法;
一个类只能继承一个直接父类,接口是多继承的,并且支持一个类实现多个接口;
成员变量:接口默认是 public static final,抽象类默认是包权限;
方法:接口里面定义默认是 public abstract,抽象类默认是包权限;
内部类:接口里面定义默认是 public static ,抽象类默认是包访问权限;
如果接口和抽象类都能完成相同的功能,那么尽量使用接口,(面向接口编程);
设计模式:接口和抽象类集合使用;
7、面向接口的好处
多态的好处:把实现类的对象赋给接口类型变量,屏蔽了不同实现类之间的实现差异,从而做到通用编程;