ch06-03面向对象编程-面向接口.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《ch06-03面向对象编程-面向接口.ppt》由会员分享,可在线阅读,更多相关《ch06-03面向对象编程-面向接口.ppt(48页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第六章节:面向对象编程第六章节:面向对象编程接口与设计模式接口与设计模式回顾回顾v举例说明在什么样的情况下,需要使用到继承?举例说明在什么样的情况下,需要使用到继承?v在在JavaJava程序中,多态带给我们的好处是什么?程序中,多态带给我们的好处是什么?v掌握掌握JavaJava接口接口v理解理解JavaJava接口与多态的关系接口与多态的关系v掌握面向接口编程的思想掌握面向接口编程的思想v掌握常量接口的使用掌握常量接口的使用v设计模式设计模式本章目标本章目标单一继承的局限性单一继承的局限性1 1、如下的类图描述正确吗?、如下的类图描述正确吗?2 2、青蛙是两栖动物,怎么办呢?、青蛙是两栖动
2、物,怎么办呢?我该何处何从我该何处何从什么是什么是JavaJava接口接口v接口与前面所学的抽象类一样是一种规范和标准、可以约接口与前面所学的抽象类一样是一种规范和标准、可以约束类的行为束类的行为v定义一个接口不指定具体的实现定义一个接口不指定具体的实现v一个一个JavaJava接口是一些方法特征的集合,但没有方法的实现接口是一些方法特征的集合,但没有方法的实现JavaJava接口中定义的方法在不同的地方被实现,可以具有完接口中定义的方法在不同的地方被实现,可以具有完全不同的行为全不同的行为一个例子一个例子一个实例一个实例public interface PCI public interfac
3、e PCI public void public void start();start();public void public void stop();stop();class class SoundCardSoundCard implements PCI implements PCI public void start()public void start()System.out.println(DuSystem.out.println(Du dudu.);.);public void stop()public void stop()System.out.println(SoundSyst
4、em.out.println(Sound stop!);stop!);这是这是JavaJava接口,相当于主接口,相当于主板上的板上的PCIPCI插槽的规范插槽的规范class class NetworkCardNetworkCard implements PCI implements PCI public void start()public void start()System.out.println(SendSystem.out.println(Send.);.);public void stop()public void stop()System.out.println(Network
5、System.out.println(Network stop!);stop!);声卡、网卡都实现了声卡、网卡都实现了PCIPCI插槽的规范,但行为完全不同插槽的规范,但行为完全不同 一个实例一个实例public class Assembler public class Assembler public static void public static void main(Stringmain(String argsargs)PCI PCI ncnc=new =new NetworkCardNetworkCard();();PCI sc=new PCI sc=new SoundCardSou
6、ndCard();();nc.startnc.start();();sc.startsc.start();();可以使用可以使用JavaJava接口标识类型接口标识类型运行时,根据实际创建的对象类型调用相应的方法实现运行时,根据实际创建的对象类型调用相应的方法实现DuDu dudu.Send.Send.控制台输出控制台输出2 21 生活中的接口生活中的接口USB接口接口使用使用USB接口必须接口必须符合符合USB规范规范接口是一套规范,遵守这个规范就可以实现功能接口是一套规范,遵守这个规范就可以实现功能 接口的特点接口的特点JAVAJAVA中一个类能否继承多个父类?中一个类能否继承多个父类?v
7、接口:接口:接口可以说是对继承单根性的扩展接口可以说是对继承单根性的扩展接口提供了一组规范、一个标准接口提供了一组规范、一个标准接口屏蔽了实现的细节接口屏蔽了实现的细节方便多人协同开发方便多人协同开发v特点:特点:接口不能被实例化接口不能被实例化不管是否标识,接口中所有方法都是抽象的,公共的。不管是否标识,接口中所有方法都是抽象的,公共的。接口中只能定义常量接口中只能定义常量用接口实现用接口实现让我们为青蛙找一个合法的身份?让我们为青蛙找一个合法的身份?JAVAJAVA接口接口v开发这样一个小系统,包含类型:教员、中心、打开发这样一个小系统,包含类型:教员、中心、打印机,具体要求如下:印机,具
8、体要求如下:教员、以及中心都具有方法:输出详细信息教员、以及中心都具有方法:输出详细信息中心具有属性:打印机,能够通过中心的打印机打印教员中心具有属性:打印机,能够通过中心的打印机打印教员或中心的详细信息或中心的详细信息系统要具备良好的可扩展性与可维护性系统要具备良好的可扩展性与可维护性打印打印 教员教员 中心中心 教员教员详细信息详细信息中心中心详细信息详细信息detail方法方法(输出详细信息)(输出详细信息)JAVAJAVA接口接口v以下这个解决方案中存在着什么问题?以下这个解决方案中存在着什么问题?public class public class UCSTeacher1UCSTeac
9、her1 /输输出教出教员员的的详细详细信息信息public String detail()public String detail()return return 本人是本人是CSUCSU教员教员;public class public class UCSSchool1UCSSchool1 private Printer private Printer printerprinter=new =new Printer();Printer();/输输出中心的出中心的详细详细信息信息public String detail()public String detail()return return 这
10、里是这里是CSUCSU中心中心;/使用打印机打印教员信息使用打印机打印教员信息public void public void print(UCSTeacher1print(UCSTeacher1 t)t)printer.print(t.detailprinter.print(t.detail();();/使用打印机打印中心信息使用打印机打印中心信息public void public void print(UCSSchool1print(UCSSchool1 s)s)printer.print(s.detailprinter.print(s.detail();();public class P
11、rinter public class Printer public void public void print(Stringprint(String content)content)System.out.printlnSystem.out.println(开始打印:开始打印:););System.out.println(contentSystem.out.println(content););每增加一种新类型,都需要增加相应的每增加一种新类型,都需要增加相应的print(print(类型名称类型名称 varvar)方法方法程序的可扩展性及可维护性极差程序的可扩展性及可维护性极差这不符合系统
12、的要求这不符合系统的要求用Java接口重构项目 v在这个系统中,存在继承关系吗?在这个系统中,存在继承关系吗?教员、中心属于两种不同的类型,无法通过教员、中心属于两种不同的类型,无法通过“is-ais-a”找到一找到一个合适的父类个合适的父类v教员、中心都存在一个共同的方法特征:教员、中心都存在一个共同的方法特征:detaildetail,它,它们对们对detaildetail方法有各自不同的实现方法有各自不同的实现这完全符合这完全符合JavaJava接口的定义接口的定义类图类图定义一个定义一个JavaJava接口,在其中定义接口,在其中定义detaildetail方法,但没有具体实现方法,但
13、没有具体实现实现这个实现这个JavaJava接口,不同的类对接口,不同的类对detaildetail方法有不同的具体实现方法有不同的具体实现使用了使用了JavaJava接口之后,这个系统有了怎样的改接口之后,这个系统有了怎样的改进?进?JavaJava接口重构之后接口重构之后public interface public interface IPrintableIPrintable public String detail();public String detail();public class public class UCSSchool2UCSSchool2 implements imp
14、lements IntroduceableIntroduceable private Printer private Printer printerprinter=new =new Printer();Printer();/输输出中心的出中心的详细详细信息信息public String detail()public String detail()return return“这这里是中信培里是中信培训训中心中心;/使用中心打印机打印信息使用中心打印机打印信息public void public void print(print(IPrintableIPrintable intro)intro)p
15、rinter.print(intro.detailprinter.print(intro.detail();();public class public class UCSTeacher2UCSTeacher2 implements implements IPrintableIPrintable /输输出教出教员员的的详细详细信息信息public String detail()public String detail()return return“本人是中信教本人是中信教员员;通过通过JavaJava接口,我们同样可以享受到多态性的好处,大大提高了接口,我们同样可以享受到多态性的好处,大大提高
16、了程序的可扩展性及可维护性程序的可扩展性及可维护性 使用使用printprint方法时,参数可以是任何方法时,参数可以是任何IntroduceableIntroduceable接口的实现类接口的实现类的对象,不必再为不同的类型建立不同的的对象,不必再为不同的类型建立不同的printprint方法了方法了接口作为参数接口作为参数v接口描述了一个对象的特征接口描述了一个对象的特征v传递接口就是传递了实现接口的对象传递接口就是传递了实现接口的对象public class public class SxtSchool2SxtSchool2 /使用中心打印机打印信息使用中心打印机打印信息public v
17、oid public void print(Introduceableprint(Introduceable intro)intro)printer.print(intro.detailprinter.print(intro.detail();();什么是面向接口编程什么是面向接口编程v开发系统时,主体构架使用接口,接口构成系统的骨架开发系统时,主体构架使用接口,接口构成系统的骨架v这样就可以通过更换接口的实现类来更换系统的实现这样就可以通过更换接口的实现类来更换系统的实现public class public class UCSSchool2UCSSchool2 implements imp
18、lements IntroduceableIntroduceable private Printer private Printer printerprinter=new Printer();=new Printer();public String detail()public String detail()return return“这这里是中信培里是中信培训训中心中心;/使用中心打印机打印信息使用中心打印机打印信息public void public void print(Introduceableprint(Introduceable intro)intro)printer.print(
19、intro.detailprinter.print(intro.detail();();面向接口编程第一步面向接口编程第一步v能否在前面的安例上添加黑白或彩色打印功能能否在前面的安例上添加黑白或彩色打印功能v采用面向接口编程的方式实现,采用面向接口编程的方式实现,v以下是三个步骤中的第一步:以下是三个步骤中的第一步:抽象出抽象出JavaJava接口接口1 1、分析:、分析:黑白、彩色打印机都存在一个共同的方法特征:黑白、彩色打印机都存在一个共同的方法特征:printprint黑白、彩色打印机对黑白、彩色打印机对printprint方法有各自不同的实现方法有各自不同的实现public inter
20、face public interface PrinterFacePrinterFace public void public void print(Stringprint(String content);content);面向接口编程第二步面向接口编程第二步v采用面向接口编程的方式实现,以下是三个步骤中的采用面向接口编程的方式实现,以下是三个步骤中的第二步:第二步:v实现实现JavaJava接口接口:结论:黑白、彩色打印机都实现结论:黑白、彩色打印机都实现PrinterFacePrinterFace接口,各自实现接口,各自实现printprint方法方法public class public
21、 class ColorPrinterColorPrinter implements implements PrinterFacePrinterFace public void public void print(Stringprint(String content)content)System.out.printlnSystem.out.println(彩色打印:彩色打印:););System.out.println(contentSystem.out.println(content););public class public class BlackPrinterBlackPrinter
22、implements implements PrinterFacePrinterFace public void public void print(Stringprint(String content)content)System.out.printlnSystem.out.println(黑白打印:黑白打印:););System.out.println(contentSystem.out.println(content););面向接口编程第三步v采用面向接口编程的方式实现,以下是三个步骤中的采用面向接口编程的方式实现,以下是三个步骤中的第三步:第三步:使用使用 3 3、具体实现:、具体实现
23、:public class public class MySchool3MySchool3 implements implements IntroduceableIntroduceable private private PrinterFacePrinterFace printer;/printer;/打印机打印机 public void public void setPrinter(PrinterFacesetPrinter(PrinterFace p)p)this.printerthis.printer=p;=p;public String detail()public String de
24、tail()return return 这这里是中里是中;public void public void print(Introduceableprint(Introduceable intro)intro)printer.print(intro.detailprinter.print(intro.detail();();public class public class TestTest public static void public static void main(Stringmain(String argsargs)/创创建中心建中心实实例例 AccpSchool3 school=
25、new AccpSchool3();AccpSchool3 school=new AccpSchool3();/为该为该中心配中心配备备黑白打印机黑白打印机 school.setPrinter(newschool.setPrinter(new BlackPrinterBlackPrinter();();school.print(schoolschool.print(school););/为该为该中心配中心配备备彩色打印机彩色打印机 school.setPrinter(newschool.setPrinter(new ColorPrinterColorPrinter();();school.pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ch06 03 面向 对象 编程 接口
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内