《接口与实现》PPT课件.ppt_第1页
《接口与实现》PPT课件.ppt_第2页
《接口与实现》PPT课件.ppt_第3页
《接口与实现》PPT课件.ppt_第4页
《接口与实现》PPT课件.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020 3 23 信息学院 1 第7章接口与实现 Java不支持多继承性 即一个类只能有一个父类 单继承性使得Java简单 易于管理程序 为了克服单继承的缺点 Java使用了接口 一个类可以实现多个接口 使用关键字interface来定义一个接口 接口的定义和类的定义很相似 分为接口的声明和接口体 2020 3 23 信息学院 2 7 1 1接口的声明与使用 1 接口声明接口通过使用关键字interface来声明interface接口的名字 2 接口体接口体中包含常量定义和方法定义两部分 接口体中只进行方法的声明 不许提供方法的实现 所以方法的定义没有方法体 且用分号结尾 7 1接口 2020 3 23 信息学院 3 例 interfaceRunner publicstaticfinalintid 1 publicvoidstart publicvoidrun publicvoidstop 7 1接口 2020 3 23 信息学院 4 3 接口的使用一个类通过使用关键字implements声明自己使用一个或多个接口 如果使用多个接口 用逗号隔开接口名 如 classAimplementsPrintable AddableclassDogextendsAnimalimplementsEatable Sleepable 7 2实现接口 2020 3 23 信息学院 5 7 2实现接口 如果一个类使用了某个接口 那么这个类必须实现该接口的所有方法 即为这些方法提供方法体 需要注意的是在类中实现接口的方法时 方法的名字 返回类型 参数个数及类型必须与接口中的完全一致 特别要注意的是接口中的方法被默认是public的 所以类在实现接口方法时一定要用public来修饰 2020 3 23 信息学院 6 如果接口的方法的返回类型不是void的 那么在类中实现该接口方法时 方法体至少要有一个return语句 如果是void型 类体除了两个大括号外 也可以没有任何语句 7 2实现接口 Java为我们提供的接口都在相应的包中 通过引入包可以使用Java提供的接口 也可以自己定义接口 一个java源文件就是由类和接口组成的 2020 3 23 信息学院 7 例 importjava applet importjava awt interfaceComputable finalintMAX 100 voidspeak Strings intf intx floatg floatx floaty classChinaimplementsComputable intxuehao publicintf intx 不要忘记public关键字 intsum 0 for inti 1 i x i sum sum i returnsum 2020 3 23 信息学院 8 publicfloatg floatx floaty return6 至少有return语句 publicvoidspeak Strings classJapanimplementsComputable intxuehao publicintf intx return68 publicfloatg floatx floaty returnx y 2020 3 23 信息学院 9 publicvoidspeak Strings publicclassExample4 26extendsApplet ChinaLi JapanHenlu publicvoidinit Li newChina Henlu newJapan Li xuehao 991898 Henlu xuehao 941448 2020 3 23 信息学院 10 publicvoidpaint Graphicsg g drawString xuehao Li MAX Li xuehao 从1到100求和 Li f 100 10 20 g drawString xuehao Henlu MAX Henlu xuehao 加法 Henlu g 2 0f 3 0f 10 40 注 如果一个类声明实现一个接口 但没有实现接口中的所有方法 那么这个类必须是abstract类 2020 3 23 信息学院 11 接口的语法规则很容易记住 但真正理解接口更重要 你可能注意到 在上述例子26中如果去掉接口 并把程序中的Li MAX Henlu MAX去掉 上述程序的运行没有任何问题 那为什么要用接口呢 7 3理解接口 2020 3 23 信息学院 12 假如轿车 卡车 拖拉机 摩托车 客车都是机动车的子类 其中机动车是一个抽象类 如果机动车中有一个抽象方法 收取费用 那么所有的子类都要实现这个方法 即给出方法体 产生各自的收费行为 这显然不符合人们的思维方法 因为拖拉机可能不需要有 收取费用 的功能 而其他的一些类 比如飞机 轮船等可能也需要具体实现 收取费用 7 3理解接口 2020 3 23 信息学院 13 接口可以增加很多类都需要实现的功能 不同的类可以使用相同的接口 同一个类也可以实现多个接口 7 3理解接口 接口只关心功能 并不关心功能的具体实现 比如 客车类 实现一个接口 该接口中有一个 收取费用 的方法 那么这个 客车类 必须具体给出怎样收取费用的操作 即给出方法的方法体 不同车类都可以实现 收取费用 但 收取费用 的手段可能不相同 2020 3 23 信息学院 14 7 3理解接口 接口的思想在于它可以增加很多类都需要实现的功能 使用相同的接口类不一定有继承关系 注 接口声明时 如果关键字interface前面加上public关键字 就称这样的接口是一个public接口 public接口可以被任何一个类使用 如果一个接口不加public修饰 就称做友好接口类 友好接口可以被同一包中的类使用 7 4接口的UML图 表示接口的UML图和表示类的UML图类似 使用一个长方形描述一个接口的主要构成 将长方形垂直地分为三层 第1层是名字层 第2层是常量层 第3层是方法层 2020 3 23 信息学院 16 接口回调是指可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中 那么该接口变量就可以调用被类实现的接口中的方法 实际上 当接口变量调用被类实现的接口中的方法时 就是通知相应的对象调用接口的方法 7 5接口回调 2020 3 23 信息学院 17 例 interfaceShowMessage void显示商标 Strings classTVimplementsShowMessage publicvoid显示商标 Strings System out println s classPCimplementsShowMessage publicvoid显示商标 Strings System out println s 7 5接口回调 2020 3 23 信息学院 18 publicclassExample4 28 publicstaticvoidmain Stringargs ShowMessagesm sm newTV sm 显示商标 长城牌电视机 sm newPC sm 显示商标 联想奔月5008PC机 7 5接口回调 2020 3 23 信息学院 19 7 7接口变量做参数 如果一个方法的参数是接口类型 就可以将任何实现该接口类的实例的引用传递给该接口参数 那么接口参数就可以回调类实现的接口方法 7 6接口与多态 可以通过在接口中声明若干个abstract方法 表明这些方法的重要性 方法体的内容细节由实现接口的类去完成 使用接口进行程序设计的核心思想是使用接口回调 即接口变量存放实现该接口的类的对象的引用 从而接口变量就可以回调类实现的接口方法 例3 7 8abstract类与接口的比较 接口和abstract类的比较如下 1 abstract类和接口都可以有abstract方法 2 接口中只可以有常量 不能有变量 而abstract类中即可以有常量也可以有变量

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论