第三章 抽象类与接口_第1页
第三章 抽象类与接口_第2页
第三章 抽象类与接口_第3页
第三章 抽象类与接口_第4页
第三章 抽象类与接口_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

抽象类与接口 本章内容 1 抽象类的概念 定义与应用2 接口的概念 定义与应用介绍几种常见的设计模式3 抽象类与接口的比较相同点不同点 抽象类 包含有至少一个抽象方法的类称为抽象类 用abstract关键字修饰 不能创建自己的对象 抽象方法交由子类去覆盖 完成方法体 抽象方法 只有方法的头部 没有方法体 在继承抽象类的子类中来实现父类中的所有抽象方法 完成方法体部分 声明抽象方法与抽象类 权限修饰符 abstractreturnType方法名 paramlist 说明 1 只有方法头部 没有方法体 以 结束 2 构造方法不能声明为抽象方法 例如 publicabstractfloatgetArea 权限修饰符 abstractclass类名称 成员属性 方法 定义一般方法构造方法 abstract方法 定义抽象方法 抽象类的作用 抽象类本身不能实例化 而抽象类的子类实现了抽象类的抽象方法 因此通常都是定义抽象类的引用指向子类的实例 自动完成向上转型 是对象多态性的一个很好体现 AbstractClassac newAbstractClassImp 抽象类应用举例 有三类图书 科技书 文艺书和教材 三类书的属性和方法如下图所示 请用抽象类的方式完成相关代码的编写 图书价格 每页价格 页码 折扣 定义抽象类BookabstractclassBook intbookPage floatdiscount floatpagePrice 定义三个成员属性publicBook intbookPage floatdiscount floatpagePrice this bookPage bookPage this discount discount this pagePrice pagePrice abstractvoidshowKind 显示图书种类publicfloatgetPrice returnbookPage discount pagePrice classScienceBookextendsBook 定义科技书publicScienceBook intbookPage floatdiscount floatpagePrice super bookPage discount pagePrice publicvoidshowKind 实现抽象方法 System out println Thebook stypeisscience classArtBookextendsBook 定义文艺书publicArtBook intbookPage floatdiscount floatpagePrice super bookPage discount pagePrice publicvoidshowKind 实现抽象方法 System out println Thebook stypeisart publicclassBookTest publicstaticvoidmain Stringargs Booksb newScienceBook 520 0 7f 0 2f sb showKind System out println getPrice Booktb newArtBook 400 0 8f 0 3f tb price tb getPrice 400 0 8f tb showKind System out println getPrice 抽象类的实际应用 如何在实际应用中定义抽象类 1 提取子类共有的属性 可选项 2 提取子类共有的方法 可选项 提取子类共有的方法 但该方法的方法体子类各有不同 则此方法定义为抽象方法 必须项 练习 学生有姓名 年龄和成绩属性 教师有姓名 年龄和职称属性 学生和教师都能讲话 但所讲的内容不同 采用抽象类的方式完成上述代码的编写 接口的定义 现实世界的接口 两个不同物体之间相互交互所必须通过的一个中介 没有这个中介 两者无法交互 软件世界的接口 1 狭义 某个程序设计语言所提供的API 2 广义 人与软件交互的图形界面 GUI Java中的接口 一种特殊的 类 只能包含常量和抽象方法 属于引用数据类型 接口的作用 为什么要定义接口 Java出于安全性考虑 只支持单重继承 而不支持多重继承 多重继承更能表达现实世界 接口的作用 配合继承解决Java无法多继承的缺点 提供方法声明与实现相分离的机制 使实现接口的各个类表现出多态性 Aa newB B是实现了接口A的类 接口的定义 一个接口的定义包含以下部分 public interfaceMyInterface extendsInterface1 publicstaticfinal doubleE 2 718282 publicabstract voiddoSomething inti doublex publicabstract intdoSomethingElse Strings 访问控制符 接口关键字 接口名 接口可以继承接口 接口中可以定义常量 抽象方法 只声明不实现 接口的实现 接口的实现是交给类来完成的 public classMyInterfaceImp extends父类名 implements接口名 继承了接口中的常量publicvoiddoSomething inti doublex publicintdoSomethingElse Strings 一个类可以实现多个接口 实现接口的抽象方法 添加方法体 接口的简单应用 定义一个测试类 分别创建圆形类和矩形类的对象 输出各自的面积和周长 接口的高级应用 设计模式 设计模式针对面向对象系统中重复出现的设计问题 提出一个通用的设计方案 并予以系统化的命名和动机解释 设计模式描述了问题 解决方案 在什么条件下使用该解决方案及其效果 解决方案是解决该问题的一组精心安排的通用的类和接口 再经过定制和实现就可用来解决特定上下文中的问题 代理模式 应用的场景 一个对象不想或者不能直接引用另外一个对象 那么通过代理可以在两者之间起到连接作用 1 抽象目标角色 声明真实目标对象和代理的共同接口 2 代理角色 内部包含对真实目标对象的引用 3 真实目标角色 是客户端真正要交流的对象 需要被代理 适配器模式 使用场景 将一个类的接口 被适配对象 转换成客户希望调用的另外一个接口 目标 适配器模式 模式的三种角色 目标 Target 客户想使用的接口 被适配者 Adaptee 一个已经存在的接口或抽象类 需要被适配 适配器 Adapter 是一个类 实现目标接口并包含被适配者的引用 接口的特点 1 接口可以定义为多继承 类不能多继承 interfaceA doublegetArea interfaceB StringgetName publicinterfaceCextendsA B StringgetAddress 2 接口没有最高层 类有最高层 Object 接口的特点 3 接口中的方法默认为publicabstract 接口中的成员属性默认为publicstaticfinal 例如 doublePI 3 14f 系统默认为publicstaticfinaldoublePI 3 14159 4 接口中的方法只能是抽象方法 不存在非抽象方法和构造方法 抽象类与接口的比较 相同点 1 都包含

温馨提示

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

评论

0/150

提交评论