接口

接口

  1. 什么是接口:
  2. 如何实现接口:
  3. 接口带来的好处?
  4. 接口的特点:
  5. 抽象类和接口的区别:
  6. 接口的必要性:
  7. 总结:
  8. 习题:
  9. 学习目标:
    • 什么是接口?
    • 如何实现接口?
    • 接口带来的好处?
    • 接口的特点
    • 抽象类和接口的区别
    • 常量
    • 接口必要性

什么是接口:

  • 一个Java接口是一些方法特征的集合,在接口中只包含常量和抽象方法。
    类通过实现(implements)接口的方式可以帮我们完成多态(父类引用指向子类对象)
    接口跟抽象类很相似,源文件以.java文件保存,编译字节码以.class文件保存,里面包含抽象方法

如何实现接口:

接口的语法规则

接口用关键字interface修饰
  1. interface 接口名 {}
  2. 如: public interface Runnable{},public interface IJump{}类
实现接口用implements关键字
  1. class 类名 implements 接口名 {}
  2. 如: public class RunImpl implements Runnable{}

接口的命名规则

  • 接口定义一般以able结尾,比如Runnable,或者I开头,如IJump
  • 接口的实现类一般以Impl结尾,比如RunImpl,JumpImpl;

接口带来的好处?

  1. java不能多继承,但是可以多实现。
  2. 因为接口中都为抽象方法,代码耦合性更低。

接口的特点:

  1. 接口不能实例化
  2. 接口的实现类
    • 是一个抽象类,可部分实现其中抽象方法。
    • 是一个具体类,这个类必须重写接口中的所有抽象方法。
  3. 成员变量
    • 接口的成员变量只能是常量,写与不写,强制加修饰符:public,static,final,不能与private和protected关键字共存.
  4. 构造方法:接口没有构造方法
  5. 成员方法
    只能是抽象的,写与不写,强制加修饰符:public,abstract,不能与private和protected关键字共存。
注意:一个类可以实现多个接口、一个接口可以继承多个接口,用“,”分隔

抽象类和接口的区别:

成员区别

  • 抽象类:有构造方法、有抽象方法、以及其他与具体类一样的方法和属性
  • 接口:没有构造方法、只有抽象方法和常量

关系区别:

  • 类与类(extends):继承关系,只能单继承,可以多层继承
  • 类与接口(extends、implements):实现关系,可以单实现,也可以多实现。还可以在继承一个类的同时,实现多个接口
  • 接口与接口(extends):继承关系,可以单继承,也可以多继承
  • 设计理念不同
    1. 抽象类:is a,抽象类中定义的是共性功能。
    2. 接口:has a,接口中定义的是扩展功能。

接口的必要性:

案例

  • 【前期】老师使用黑白打印机打印老师信息
  • 【后期】升级ANDROID系统,要求如下:
  • 打印机有多种类型,比如:黑白打印机、彩色打印机等。学校可能配备其中任意一款打印机,负责打印老师或者学校的详细信息.系统要具备良好的可扩展性与可维护性。

接口的优点:

可以实现多态、将具体功能抽象,由他的实现类实现

总结:

  • 接口:方法特征集合,只包含方法(public abstract)和常量(public static final),
  • 接口使用:interface 接口名 {}、class 类名 implements 接口名 {}
  • 接口的特点
  • 抽象类和接口的区别
  • 常量
  • 接口的必要性:可扩展性与可维护性

习题:

  1. 定义抽象人(Person)类,有吃饭、睡觉功能。
    定义一个学习接口,有学习Java的功能。
    定义一个教学接口,有教Java的功能。
    定义具体老师类继承自人类,并实现教学接口。
    定义一个学生类继承自人类,并实现学习接口。
  2. 定义 SoundCard 声卡类 (属性 和 方法自定义)
    请定义 NetCard 网卡类 (属性 和 方法自定义)
    请定义PCI接口. 接口中定义 work() 工作方法;
    声卡和网卡都可以插上PCI接口. 请实现PCI
    显卡只能插上AGP插槽接口
    请定义AGP接口,接口中定义display()显示方法
    请定义DisPlayGF GF显卡类 实现AGP
    请定义DisPlayATI ATI显卡类 实现AGP
    请定义MainBorad 主板主
    在MainBoard上安装PCI,AGP插槽接口.
    运行MainBorad的startWork 开始工作方法.将声卡,显卡,网卡装在接口上后在运行.
  3. 开发组装打印机
    需要B5,A4的纸张类。 (属性 方法自定义) 。由于全球要统一B5和A4类型纸张的规范,所以要
    定义一个Paper接口。其中 定义 getSize();方法。让B5,A4类型遵守Paper的规范
    需要ColorInk,BlackInk 彩色和黑白的两个墨盒。 墨盒也需要统一,应该都有颜色。
    请定义Ink墨盒接口。 getColor()方法。
    定义Printer 打印机类
    为打印机类提供2个接口好放入纸张和墨盒,墨盒接口和纸张接口。
    实例化打印机,将需要的纸盒打印机安装在打印机的接口上,运行打印机的print打印方法。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值