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

链接地址:https://www.31ppt.com/p-6034381.html