ch06-03面向对象编程-面向接口.ppt
《ch06-03面向对象编程-面向接口.ppt》由会员分享,可在线阅读,更多相关《ch06-03面向对象编程-面向接口.ppt(48页珍藏版)》请在三一文库上搜索。
1、第六章节:面向对象编程,接口与设计模式,,回顾,举例说明在什么样的情况下,需要使用到继承? 在Java程序中,多态带给我们的好处是什么?,,掌握Java接口 理解Java接口与多态的关系 掌握面向接口编程的思想 掌握常量接口的使用 设计模式,本章目标,,单一继承的局限性,1、如下的类图描述正确吗? 2、青蛙是两栖动物,怎么办呢?,我该何处何从,,什么是Java接口,接口与前面所学的抽象类一样是一种规范和标准、可以约束类的行为 定义一个接口不指定具体的实现 一个Java接口是一些方法特征的集合,但没有方法的实现,Java接口中定义的方法在不同的地方被实现,可以具有完全不同的行为,,一个例子,,一
2、个实例,public interface PCI public void start(); public void stop(); ,class SoundCard implements PCI public void start() System.out.println(“Du du.“); public void stop() System.out.println(“Sound stop!“); ,这是Java接口,相当于主板上的PCI插槽的规范,class NetworkCard implements PCI public void start() System.out.println(
3、“Send.“); public void stop() System.out.println(“Network stop!“); ,声卡、网卡都实现了PCI插槽的规范,但行为完全不同,,一个实例,public class Assembler public static void main(String args) PCI nc = new NetworkCard(); PCI sc = new SoundCard(); nc.start(); sc.start(); ,可以使用Java接口标识类型 运行时,根据实际创建的对象类型调用相应的方法实现,Du du. Send.,控制台输出,2,1
4、,,生活中的接口,USB接口,使用USB接口必须符合USB规范,接口是一套规范,遵守这个规范就可以实现功能,,接口的特点,JAVA中一个类能否继承多个父类?,接口: 接口可以说是对继承单根性的扩展 接口提供了一组规范、一个标准 接口屏蔽了实现的细节 方便多人协同开发 特点: 接口不能被实例化 不管是否标识,接口中所有方法都是抽象的,公共的。 接口中只能定义常量,,用接口实现,让我们为青蛙找一个合法的身份?,,JAVA接口,开发这样一个小系统,包含类型:教员、中心、打印机,具体要求如下: 教员、以及中心都具有方法:输出详细信息 中心具有属性:打印机,能够通过中心的打印机打印教员或中心的详细信息
5、系统要具备良好的可扩展性与可维护性,打印,教员,中心,教员 详细信息,中心 详细信息,detail方法 (输出详细信息),,JAVA接口,以下这个解决方案中存在着什么问题?,public class UCSTeacher1 /输出教员的详细信息 public String detail() return “本人是CSU教员“; ,public class UCSSchool1 private Printer printer = new Printer(); /输出中心的详细信息 public String detail() return “这里是CSU中心“; /使用打印机打印教员信息 pub
6、lic void print(UCSTeacher1 t) printer.print(t.detail(); /使用打印机打印中心信息 public void print(UCSSchool1 s) printer.print(s.detail(); ,public class Printer public void print(String content) System.out.println(“开始打印:“); System.out.println(content); ,每增加一种新类型,都需要增加相应的print(类型名称 var)方法 程序的可扩展性及可维护性极差 这不符合系统的要
7、求,,用Java接口重构项目,在这个系统中,存在继承关系吗? 教员、中心属于两种不同的类型,无法通过“is-a”找到一个合适的父类 教员、中心都存在一个共同的方法特征:detail,它们对detail方法有各自不同的实现这完全符合Java接口的定义,,类图,定义一个Java接口,在其中定义detail方法,但没有具体实现,实现这个Java接口,不同的类对detail方法有不同的具体实现,,使用了Java接口之后,这个系统有了怎样的改进?,Java接口重构之后,public interface IPrintable public String detail(); ,public class UC
8、SSchool2 implements Introduceable private Printer printer = new Printer(); /输出中心的详细信息 public String detail() return “这里是中信培训中心“; /使用中心打印机打印信息 public void print(IPrintable intro) printer.print(intro.detail(); ,public class UCSTeacher2 implements IPrintable /输出教员的详细信息 public String detail() return “本人
9、是中信教员“; ,通过Java接口,我们同样可以享受到多态性的好处,大大提高了程序的可扩展性及可维护性,使用print方法时,参数可以是任何Introduceable接口的实现类的对象,不必再为不同的类型建立不同的print方法了,,接口作为参数,接口描述了一个对象的特征 传递接口就是传递了实现接口的对象,public class SxtSchool2 /使用中心打印机打印信息 public void print(Introduceable intro) printer.print(intro.detail(); ,,什么是面向接口编程,开发系统时,主体构架使用接口,接口构成系统的骨架 这样就
10、可以通过更换接口的实现类来更换系统的实现,public class UCSSchool2 implements Introduceable private Printer printer = new Printer(); public String detail() return “这里是中信培训中心“; /使用中心打印机打印信息 public void print(Introduceable intro) printer.print(intro.detail(); ,,面向接口编程第一步,能否在前面的安例上添加黑白或彩色打印功能 采用面向接口编程的方式实现, 以下是三个步骤中的第一步:,抽象
11、出Java接口 1、分析: 黑白、彩色打印机都存在一个共同的方法特征:print 黑白、彩色打印机对print方法有各自不同的实现,public interface PrinterFace public void print(String content); ,,面向接口编程第二步,采用面向接口编程的方式实现,以下是三个步骤中的第二步: 实现Java接口: 结论:黑白、彩色打印机都实现PrinterFace接口,各自实现print方法,public class ColorPrinter implements PrinterFace public void print(String conten
12、t) System.out.println(“彩色打印:“); System.out.println(content); ,public class BlackPrinter implements PrinterFace public void print(String content) System.out.println(“黑白打印:“); System.out.println(content); ,,面向接口编程第三步,采用面向接口编程的方式实现,以下是三个步骤中的第三步:,使用 3、具体实现:,public class MySchool3 implements Introduceabl
13、e private PrinterFace printer; /打印机 public void setPrinter(PrinterFace p) this.printer = p; public String detail() return “这里是中“; public void print(Introduceable intro) printer.print(intro.detail(); ,public class Test public static void main(String args) / 创建中心实例 AccpSchool3 school=new AccpSchool3()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ch06 03 面向 对象 编程 接口
链接地址:https://www.31doc.com/p-2140694.html