第8章 面向对象的Java实现-接口.ppt
《第8章 面向对象的Java实现-接口.ppt》由会员分享,可在线阅读,更多相关《第8章 面向对象的Java实现-接口.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向面向面向面向对对象的象的象的象的JavaJava实现实现-接口接口接口接口第八章第八章第八章第八章2回顾回顾举例说明在什么样的情况下,需要使用到继承?举例说明在什么样的情况下,需要使用到继承?在在Java程序中,多态性带给我们的好处是什么?程序中,多态性带给我们的好处是什么?3预习检查预习检查什么是常量?什么是常量?Java中,常量的定义规则有哪些?中,常量的定义规则有哪些?什么是面向接口编程,它的好处是什么?什么是面向接口编程,它的好处是什么?4本章任务本章任务升级升级HelloACCP,打印,打印ACCP中心与教员的详细信息:中心与教员的详细信息:正确使用面向接口编程的思想正确使用面向
2、接口编程的思想提高系统的可扩展性及可维护性提高系统的可扩展性及可维护性5掌握掌握Java接口接口理解理解Java接口与多态的关系接口与多态的关系掌握面向接口编程的思想掌握面向接口编程的思想掌握常量接口的使用掌握常量接口的使用本章目标本章目标抽象类抽象类可以使用可以使用abstract来修饰一个类和方法来修饰一个类和方法用用abstract修饰的类表示这个类是一个抽象类,用修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。修饰的方法表示这个方法是一个抽象方法。抽象类不能被实例化抽象类不能被实例化抽象方法是只有方法声明,而没有实现的方法。抽象方法是只有方法声明
3、,而没有实现的方法。构造方法、静态方法、私有方法、构造方法、静态方法、私有方法、final方法不能被声明为方法不能被声明为抽象的方法。抽象的方法。6抽象类的例子抽象类的例子publicabstractclassShape/*画出自己画出自己*/publicabstractvoiddraw();/*得到面积得到面积*/publicdoublegetArea()return100.0;7抽象类(抽象类(abstractclass)抽象类里面并非一定需要抽象方法,但是没有抽象方法,抽象类里面并非一定需要抽象方法,但是没有抽象方法,抽象类就没有存在的必要抽象类就没有存在的必要在以下任一条件成立时,类必
4、须定义成抽象类:在以下任一条件成立时,类必须定义成抽象类:类中有至少一个抽象方法类中有至少一个抽象方法类继承了父类中的抽象方法,但是至少有一个抽象方法没有实现类继承了父类中的抽象方法,但是至少有一个抽象方法没有实现类实现了某个接口,但没有全部实现接口中的方法类实现了某个接口,但没有全部实现接口中的方法8创建抽象类的对象创建抽象类的对象抽象类不可实例化抽象类不可实例化如果从一个抽象类继承,并想创建该新类的对象,那么我如果从一个抽象类继承,并想创建该新类的对象,那么我们就必须为基类中的所有抽象方法提供方法定义。们就必须为基类中的所有抽象方法提供方法定义。如果不这样做(可以选择不做),那么抽象类的子
5、类便也如果不这样做(可以选择不做),那么抽象类的子类便也是抽象类,且编译器将会强制我们用是抽象类,且编译器将会强制我们用abstract关键字来限关键字来限制修饰这个类。制修饰这个类。创建抽象类的对象创建抽象类的对象扩展抽象类,实现其所有抽象方法扩展抽象类,实现其所有抽象方法创建该抽象类子类的对象创建该抽象类子类的对象9抽象类的使用例子抽象类的使用例子publicclassCircleextendsShapepublicvoiddraw()System.out.println(drawacircle.);TestShape.javapublicstaticvoidmain(Stringargs
6、)/Shapeshape=newShape();/errorShapeshape=newCircle();shape.draw();System.out.println(shape.getArea();10接口(接口(interface)接口接口(interface)比抽象比抽象(abstract)的概念向前更迈进了一的概念向前更迈进了一步。你可以将它看作是步。你可以将它看作是“纯粹的纯粹的”抽象类。抽象类。它允许类的创建者为一个类建立其形式:有方法名、参数它允许类的创建者为一个类建立其形式:有方法名、参数列表和返回类型,但是没有任何方法体。接口也可以包含列表和返回类型,但是没有任何方法体。接
7、口也可以包含有数据成员。有数据成员。接口只提供了形式,而未提供任何具体实现。接口只提供了形式,而未提供任何具体实现。接口是方法和常量值的定义的集合。接口是方法和常量值的定义的集合。11接口的定义接口的定义修饰符修饰符interface接口名接口名extends父接口名表父接口名表修饰符修饰符域类型域名常量值;域类型域名常量值;/常量域声明常量域声明修饰符修饰符返回值方法名返回值方法名(参数表参数表);/抽象方法声明抽象方法声明因为所有定义在接口中的因为所有定义在接口中的常量常量都默认为都默认为public、static和和final。所有定义在接口中的。所有定义在接口中的方法方法默认为默认为p
8、ublic和和abstract,所以可以不用修饰符限定它们。,所以可以不用修饰符限定它们。和类不同的是,和类不同的是,一个接口可以继承多个父接口一个接口可以继承多个父接口.12接口例子接口例子publicinterfaceIShape/面积面积doublearea=100.0;/画出自己画出自己voiddraw();/得到面积得到面积doublegetArea();13实现接口实现接口多个无关的类可实现同一个接口。多个无关的类可实现同一个接口。一个类可实现多个无关的接口一个类可实现多个无关的接口语法如下:语法如下:classextendsimplements,*在在Java中,可以通过接口来模
9、拟多继承中,可以通过接口来模拟多继承14接口应用例子接口应用例子publicclassCircleimplementsIShapepublicvoiddraw()System.out.println(drawacircle.);publicdoublegetArea()/area=200.0;errorreturnarea;Main:IShapeshape=newCircle();shape.draw();System.out.println(shape.getArea();15实现接口注意事项实现接口注意事项在类的声明部分,用在类的声明部分,用implements关键字声明将要实现那关键字声
10、明将要实现那些接口;些接口;如果实现某接口的类不是如果实现某接口的类不是abstract类,则在类的定义部分类,则在类的定义部分必须实现指定接口的所有抽象方法,而且方法头部分应该必须实现指定接口的所有抽象方法,而且方法头部分应该与接口中的定义完全一致;与接口中的定义完全一致;如果实现某接口的类是如果实现某接口的类是abstract类,则它可以不实现该接类,则它可以不实现该接口所有的方法。但其非口所有的方法。但其非abstract的子类中必须有所有抽象的子类中必须有所有抽象方法的实在的方法体;方法的实在的方法体;接口的抽象方法的访问控制符都已指定为接口的抽象方法的访问控制符都已指定为public
11、,因此,因此,类在实现方法时,必须显式地使用类在实现方法时,必须显式地使用public修饰符。否则,修饰符。否则,将缩小接口定义方法的访问控制范围。将缩小接口定义方法的访问控制范围。(报错报错)1617生活中的接口生活中的接口电脑主板上的电脑主板上的PCI插槽的规范就类似于插槽的规范就类似于Java接口接口声卡声卡显卡显卡网卡网卡每种卡的内部结构都不相同,可以把声卡、每种卡的内部结构都不相同,可以把声卡、网卡、显卡都插在网卡、显卡都插在PCI插槽上,而不用担心哪插槽上,而不用担心哪个插槽是专门插哪个卡的个插槽是专门插哪个卡的主板主板18什么是什么是Java接口接口2-1一个一个Java接口是一
12、些方法特征的集合,但没有方法的实现接口是一些方法特征的集合,但没有方法的实现publicinterfacePCIpublicvoidstart();publicvoidstop();classSoundCardimplementsPCIpublicvoidstart()System.out.println(Dudu.);publicvoidstop()System.out.println(Soundstop!);Java接口中定义的方法在不同的地方被实现,可以具有接口中定义的方法在不同的地方被实现,可以具有完全不同的行为完全不同的行为这是这是Java接口,相当于主接口,相当于主板上的板上的PC
13、I插槽的规范插槽的规范classNetworkCardimplementsPCIpublicvoidstart()System.out.println(Send.);publicvoidstop()System.out.println(Networkstop!);声卡、网卡都实现了声卡、网卡都实现了PCI插槽的规范,但行为完全不同插槽的规范,但行为完全不同19什么是什么是Java接口接口2-2publicclassAssemblerpublicstaticvoidmain(Stringargs)PCInc=newNetworkCard();PCIsc=newSoundCard();nc.sta
14、rt();sc.start();可以使用可以使用Java接口标识类型接口标识类型运行时,根据实际创建的对象类型调用相应的方法实现运行时,根据实际创建的对象类型调用相应的方法实现Dudu.Send.控制台输出控制台输出2120为什么需要为什么需要Java接口接口5-1为为ACCP各中心开发这样一个小系统,包含类型:教员、各中心开发这样一个小系统,包含类型:教员、中心、打印机,具体要求如下:中心、打印机,具体要求如下:教员、以及中心都具有方法:输出详细信息教员、以及中心都具有方法:输出详细信息中心具有属性:打印机,能够通过中心的打印机打印教员或中中心具有属性:打印机,能够通过中心的打印机打印教员或
15、中心的详细信息心的详细信息系统要具备良好的可扩展性与可维护性系统要具备良好的可扩展性与可维护性打印打印教员教员中心中心教员教员详细信息详细信息中心中心详细信息详细信息detail方法方法(输出详细信息)(输出详细信息)21为什么需要为什么需要Java接口接口5-2以下这个解决方案中存在着什么问题?以下这个解决方案中存在着什么问题?publicclassAccpTeacher1/输出教员的详细信息输出教员的详细信息publicStringdetail()return本人是本人是ACCP教员教员;publicclassAccpSchool1privatePrinterprinter=newPrin
16、ter();/输出中心的详细信息输出中心的详细信息publicStringdetail()return这里是这里是ACCP中心中心;/使用打印机打印教员信息使用打印机打印教员信息publicvoidprint(AccpTeacher1t)printer.print(t.detail();/使用打印机打印中心信息使用打印机打印中心信息publicvoidprint(AccpSchool1s)printer.print(s.detail();publicclassPrinterpublicvoidprint(Stringcontent)System.out.println(开始打印:开始打印:);
17、System.out.println(content);每增加一种新类型,都需要增加相应的每增加一种新类型,都需要增加相应的print(类型名称类型名称var)方法方法程序的可扩展性及可维护性极差程序的可扩展性及可维护性极差这不符合系统的要求这不符合系统的要求22为什么需要为什么需要Java接口接口5-3可以通过多态性解决这个问题吗可以通过多态性解决这个问题吗?显然,本系统符合使用多态性的条件显然,本系统符合使用多态性的条件教员教员中心中心detail方法方法(负责输出详细信息)(负责输出详细信息)教员教员详细信息详细信息中心中心详细信息详细信息1221回顾多态的含义:回顾多态的含义:实现同一
18、个接口,使用不同的实例而执行不同操作实现同一个接口,使用不同的实例而执行不同操作23为什么需要为什么需要Java接口接口5-4在这个系统中,存在继承关系吗?在这个系统中,存在继承关系吗?教员、中心属于两种不同的类型,无法通过教员、中心属于两种不同的类型,无法通过“is-a”找到一个合找到一个合适的父类适的父类教员、中心都存在一个共同的方法特征:教员、中心都存在一个共同的方法特征:detail,它们对,它们对detail方法有各自不同的实现方法有各自不同的实现这完全符合这完全符合Java接口的接口的定义定义定义一个定义一个Java接口,在其中定义接口,在其中定义detail方法,但没有具体实现方
19、法,但没有具体实现实现这个实现这个Java接口,不同的类对接口,不同的类对detail方法有不同的具体实现方法有不同的具体实现IntroduceableAccpTeacher2(教员教员)AccpSchool2(中心中心)24为什么需要为什么需要Java接口接口5-5publicinterfaceIntroduceablepublicStringdetail();publicclassAccpSchool2implementsIntroduceableprivatePrinterprinter=newPrinter();/输出中心的详细信息输出中心的详细信息publicStringdetail
20、()return这里是这里是ACCP中心中心;/使用中心打印机打印信息使用中心打印机打印信息publicvoidprint(Introduceableintro)printer.print(intro.detail();publicclassAccpTeacher2implementsIntroduceable/输出教员的详细信息输出教员的详细信息publicStringdetail()return本人是本人是ACCP教员教员;通过通过Java接口,我们同样可以享受到多态性的好处,大大提高了接口,我们同样可以享受到多态性的好处,大大提高了程序的可扩展性及可维护性程序的可扩展性及可维护性使用使用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第8章 面向对象的Java实现-接口 面向 对象 Java 实现 接口
限制150内