接口
- 什么是接口:
- 如何实现接口:
- 接口带来的好处?
- 接口的特点:
- 抽象类和接口的区别:
- 接口的必要性:
- 总结:
- 习题:
- 学习目标:
- 什么是接口?
- 如何实现接口?
- 接口带来的好处?
- 接口的特点
- 抽象类和接口的区别
- 常量
- 接口必要性
什么是接口:
- 一个Java接口是一些方法特征的集合,在接口中只包含常量和抽象方法。
类通过实现(implements)接口的方式可以帮我们完成多态(父类引用指向子类对象)
接口跟抽象类很相似,源文件以.java文件保存,编译字节码以.class文件保存,里面包含抽象方法
如何实现接口:
接口的语法规则
接口用关键字interface修饰
- interface 接口名 {}
- 如: public interface Runnable{},public interface IJump{}类
实现接口用implements关键字
- class 类名 implements 接口名 {}
- 如: public class RunImpl implements Runnable{}
接口的命名规则
- 接口定义一般以able结尾,比如Runnable,或者I开头,如IJump
- 接口的实现类一般以Impl结尾,比如RunImpl,JumpImpl;
接口带来的好处?
- java不能多继承,但是可以多实现。
- 因为接口中都为抽象方法,代码耦合性更低。
接口的特点:
- 接口不能实例化
- 接口的实现类
- 是一个抽象类,可部分实现其中抽象方法。
- 是一个具体类,这个类必须重写接口中的所有抽象方法。
- 成员变量
- 接口的成员变量只能是常量,写与不写,强制加修饰符:public,static,final,不能与private和protected关键字共存.
- 构造方法:接口没有构造方法
- 成员方法
只能是抽象的,写与不写,强制加修饰符:public,abstract,不能与private和protected关键字共存。
注意:一个类可以实现多个接口、一个接口可以继承多个接口,用“,”分隔
抽象类和接口的区别:
成员区别
- 抽象类:有构造方法、有抽象方法、以及其他与具体类一样的方法和属性
- 接口:没有构造方法、只有抽象方法和常量
关系区别:
- 类与类(extends):继承关系,只能单继承,可以多层继承
- 类与接口(extends、implements):实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时,实现多个接口
- 接口与接口(extends):继承关系,可以单继承,也可以多继承
- 设计理念不同
- 抽象类:is a,抽象类中定义的是共性功能。
- 接口:has a,接口中定义的是扩展功能。
接口的必要性:
案例
- 【前期】老师使用黑白打印机打印老师信息
- 【后期】升级ANDROID系统,要求如下:
- 打印机有多种类型,比如:黑白打印机、彩色打印机等。学校可能配备其中任意一款打印机,负责打印老师或者学校的详细信息.系统要具备良好的可扩展性与可维护性。
接口的优点:
可以实现多态、将具体功能抽象,由他的实现类实现
总结:
- 接口:方法特征集合,只包含方法(public abstract)和常量(public static final),
- 接口使用:interface 接口名 {}、class 类名 implements 接口名 {}
- 接口的特点
- 抽象类和接口的区别
- 常量
- 接口的必要性:可扩展性与可维护性
习题:
- 定义抽象人(Person)类,有吃饭、睡觉功能。
定义一个学习接口,有学习Java的功能。
定义一个教学接口,有教Java的功能。
定义具体老师类继承自人类,并实现教学接口。
定义一个学生类继承自人类,并实现学习接口。 - 定义 SoundCard 声卡类 (属性 和 方法自定义)
请定义 NetCard 网卡类 (属性 和 方法自定义)
请定义PCI接口. 接口中定义 work() 工作方法;
声卡和网卡都可以插上PCI接口. 请实现PCI
显卡只能插上AGP插槽接口
请定义AGP接口,接口中定义display()显示方法
请定义DisPlayGF GF显卡类 实现AGP
请定义DisPlayATI ATI显卡类 实现AGP
请定义MainBorad 主板主
在MainBoard上安装PCI,AGP插槽接口.
运行MainBorad的startWork 开始工作方法.将声卡,显卡,网卡装在接口上后在运行. - 开发组装打印机
需要B5,A4的纸张类。 (属性 方法自定义) 。由于全球要统一B5和A4类型纸张的规范,所以要
定义一个Paper接口。其中 定义 getSize();方法。让B5,A4类型遵守Paper的规范
需要ColorInk,BlackInk 彩色和黑白的两个墨盒。 墨盒也需要统一,应该都有颜色。
请定义Ink墨盒接口。 getColor()方法。
定义Printer 打印机类
为打印机类提供2个接口好放入纸张和墨盒,墨盒接口和纸张接口。
实例化打印机,将需要的纸盒打印机安装在打印机的接口上,运行打印机的print打印方法。