1.接口的语法
- 接口是一种引用数据类型,可以定义引用类型变量,由 interface 声明
- 接口中只能定义常量和抽象方法
- 可以省略常量的修饰词 public static final
- 可以省略抽象方法修饰符 public abstract
- 在 JDK1.8之后接口中可以定义非抽象的有方法实现的方法,但是需要使用 default 关键字声明
Java |
- 接口不能实例化创建对象,可以作为父类型被子类实现(继承)
- 接口用于定义多个类的共同行为和规范,需要被子类实现,通过 implements 关键字实现接口
- 一个类可以实现多个接口,用逗号分隔
- 子类实现接口时必须重写接口中的全部抽象方法
2.抽取规则
在 Java 编程语言中接口是一个抽象类型,这样就会带来一个矛盾,抽象类也是抽象的,接口也是抽象的,区别在哪里?
- 统一种类的公共行为和属性可以抽取到抽象类
- 如果所有子类的行为都一样,设计为普通方法
- 如果所有子类的行为不一样,设计为抽象方法
- 不同种类的公共行为抽取到接口中
- 接口是对继承的单根性的扩展----实现多继承
- 符合既是也是的原则
- 例如:
- 鸟 Bird
- 飞行方法,觅食方法
- 狗 Dog
- 爬行方法,觅食方法
- 老虎 Tiger
- 跑方法,觅食方法
- 青蛙 Frog
- 跳方法,觅食方法
- 以上子类都有觅食方法,根据java 继承的抽取归纳原则,将所有子类所共有的方法抽取到父类,又由于每个子类的实现不同,所以将父类中的方法定义为抽象方法
- 父类 Animal 类
Java |
- 而飞行这些都是部分子类所具备的行为,所以定义为接口,让拥有这个能力的子类去实现
Java |
3.接口的多继承
Java 不支持“类的多继承”,也就是一个 Java 类不能继承多个父类,但是 Java 支持一个类继承一个父类实现多个接口,Java 利用这种方式实现了多继承:Java 利用接口实现了多继承
一个接口可以同时继承多个接口,中间用逗号隔开
Java |
4.接口的多实现
接口不允许实例化对象,接口需要被类实现,一个类可以同时实现多个接口
- 注意:
- 在一个类既有继承,又有实现的时候,是先继承后实现
- 类和类之间是继承关系----单继承
- 接口和接口之间也是继承关系----多继承
- 类和接口之间是实现关系----多实现
- 例如:
- 定义动物抽象类,声明所有动物所具备的行为,例如觅食行为
- 爬行和游泳是部分动物所具备的行为,分别定义两个接口,让具体此行为的动物来实现
- 定义子类青蛙类
- Animal 类
Java |
- 爬行接口 Crawl,游泳接口 Swim
Java |
- 青蛙类 frog,青蛙即是动物又会爬行还会游泳,所以需要继承动物类,并实现游泳接口和爬行接口
Java |
- 当既有继承又有实现的时候,类先继承一个类,再实现接口
线程:小球滚动和星星落幕
小球滚动:
星星落幕: