Java应用程序开发 (10).pptxVIP

  • 0
  • 0
  • 约2.25千字
  • 约 22页
  • 2019-07-17 发布于辽宁
  • 举报
学习情境十 接口 ;知识目标 理解什么是接口,如何定义接口,如何实现接口; 学习如何使用接口引用数据类型实现多态性编程。 能力目标 能够正确定义接口; 能够正确实现接口; 能够利用接口,实现多态性编程。;情景再现与任务分析;三个任务;任务一 认识并使用接口;1.Java中的接口;2.定义接口;一个接口可以扩展其它接口,就像一个类可以扩展另一个类一样。但是,一个类只能继承另一个类,而一个接口却可以继承多个接口,上面接口的定义中就包含了一个由逗号隔开的被继承的多个接口。 接口也是保存在以.java为扩展名的文件中。一般情况下,接口的名字与文件的名字相同。例如,上面定义的MyInterface接口,其对应的文件名是MyInterface.java。;3.接口的体;4.实现接口;注意: 接口与类一样,都是引用数据类型。因此,接口类型的变量可用于引用实现了该接口的类的对象。 类中的成员分为成员变量和成员方法。相对于类中的成员方法,在接口中的这个成员称为方法签名特征,即只有方法的名字和参数列表,没有方法体。所以接口与抽象类非常像。 在Java语言中,接口还有一个非常重要的作用。接口不是类继承的一部分,它与类联合使用。Java语言不允许类的多继承,但是,它提供接口作为另一个选项。某个类实现了接口后,该类对象的数据类型既可以是这个类、这个类的任意一个父类,又可以是这个接口。;【例10-1】把以公制为计量单位的数据转换为以英制为计量单位的数据。;2.编程 1)创建包。包的名字是chp10.ex.ex10_1。在本学习情境中,为每个例题单独创建子包,这样各个例题就可以使用相同的接口名字和相同的类的名字。 2)在chp10.ex.ex10_1包中创建接口。接口名是ChangeFactors,文件名是ChangeFactors.java。创建的过程是,在chp10.ex.ex10_1包中右击鼠标,在弹出的菜单项中选择New-Interface,其余的步骤与创建类的步骤类似。 3)在chp10.ex.ex10_1包中创建类。类名是ChangePersonInfor,文件名是ChangePersonInfor.java。这个类的功能是实现数据的换算。;任务二 实现接口;【例10-2】利用类来实现接口,重新实现例10-1;任务三 利用接口实现多态性编程;【例10-3】设计一个通用的排序器,利用冒泡排序算法对若干个任意的对象进行排序。;3.在chp10.ex.ex10_3包中创建类。类名是Player,文件名是Player.java。这个类用来创建NBA球员对象,它要实现Relatable接口。 Player类实现了Relatable接口中的int compare(Relatable other)方法,把对象中的年龄(age字段)拿来比较。因此,这个排序器以年龄作为关键字进行排序。用黑体显示的Player tmp = (Player)other;语句把对象other转化(cast)为Player类的对象,other被转化为Player类型的对象后,才能提取出该对象的age成员变量,用在比较语句中。 ;4.在chp10.ex.ex10_3包中创建类。类名是SortingDevice,文件名是SortingDevice.java。这个类用来创建排序器对象,它实现冒泡排序算法。 在SortingDevice类中,“private Object[] objectArray;”语句利用Object类来定义成员变量,因此,数组变量objectArray可以引用任何的类型的对象数组。“Relatable object1 = (Relatable)objectArray[j];”语句把对象object1由Object类型转化为Relatable类型,因此,object1才能调用它的compare()方法进行两个对象的比较。冒泡排序操作由sort()方法进行。这些代码都用加粗标出了。 冒泡排序是一个基本的排序算法,可以参考“拓展阅读三”。;程序说明: 应用程序产生了一个Player对象数组和一个排序器对象,把Player??象数组送人排序器对象中进行排序,然后输出排序结果。 如果修改Player类中对Relatable接口中compare()方法的实现细节,例如,把成员变量name拿来比较,那么排序器就以球员的姓名作为关键字进行排序。 试一下,把以年龄作为比较的compare()方法注释掉,然后取消对以姓名作为比较的compare()方法的注释,重新运行程序。输出的结果如下(按姓名排序): name =Allen, age=38, weight= 93.00, height=1.96 name =Bosh, age=32, weight=104.00, height

文档评论(0)

1亿VIP精品文档

相关文档