接口:
接口就是体现规范的,其中用抽象方法定义的一组行为规范,接口是更加彻底的抽象方法 。
接口中所有方法都是抽象的
必须知道的接口特性:
- 接口不可以被实例化
- 实现类必须实现接口的所有方法
- 实现类可以实现多个接口
- 接口中的变量都是静态常量、
- JDK8之前接口中只能是抽象方法和常量,没有其他成分
- 接口中的成员都是public修饰
接口的格式如下:(接口用关键字interface来定义)
public interface 接口名{
常量定义//总是public static final
方法定义//总是:public abstract
}
接口的用法:
- 接口是用来被类实现的(implements)的,实现接口的类被称为实现类。实现类可以理成所谓的子类
修饰符 class 实现类 implements 接口1,接口2,接口3{ }
-
从上面可以看出接口可以被类单实现,也可以被类多实现
-
一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。
-
接口不能创建实例,但是可用于声明引用变量类型
-
Java的类只支持单继承,接口支持多继承
接口的相关规则:
- 接口中所有方法都是抽象的。
- 即使没有显式的将接口中的成员用public标示,也是public访问类型的
- 接口中变量默认用 public static final标示,所以接口中定义的变量就是全 局静态常量。
接口实现的注意事项:
一个类实现接口,必须重写玩全部接口的全部抽象方法,否则这个类需要定义成抽象类
类和类的关系 | 单继承 |
类和接口的关系 | 多实现 |
接口和接口的关系 | 多继承,一个接口可以同时继承多个接口 |
接口多继承的作用:
规范合并,整合多个接口为同一个接口便于子类的实现
接口的方法:
- 默认方法:default修饰,实现类对象的调用
- 静态方法:static修饰,必须用当前接口名调用
- 私有方法:private修饰 JDK9开始才有的只能在接口内部被调用
- 他们都会默认被public修饰
例:格式:
default void run(){
System.out.println("");
}
接口的注意事项:
- 接口不能创建对象
- 一个类实现多个接口,多个接口中有同样的静态方法不冲突
- 一个类继承了父类,同时又实现了接口父类中和接口中有同名方法,默认用父类的
- 一个类实现了多个接口,多个接口中存在同名的默认方法不冲突,这个类重写该方法即可
- 一个接口继承,多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承
为什么需要接口?接口和抽象类的区别?
- 接口就是比“抽象类”还“抽象”的“抽象类” ,可以更加规范的对子类迚行约束。 全面地专业地实现了:规范和具体实现的分离。
- 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是…则必须 能…”的思想。如果你是天使,则必须能飞。如果你是汽车,则必须能跑。如果你好人,则必须干掉坏 人;如果你是坏人,则必须欺负好人。
- 接口的本质是契约,就像我们人间的法律一样。制定好后大家都遵守。
- 项目的具体需求是多变的,我们必须以不变应万变才能从容开发,此处的 “不变”就是“规范” 。因此,我们开发项目往往都是面向接口编程