JAVA程序设计第五章教学课件.ppt

上传人:小飞机 文档编号:5436162 上传时间:2023-07-06 格式:PPT 页数:23 大小:330.97KB
返回 下载 相关 举报
JAVA程序设计第五章教学课件.ppt_第1页
第1页 / 共23页
JAVA程序设计第五章教学课件.ppt_第2页
第2页 / 共23页
JAVA程序设计第五章教学课件.ppt_第3页
第3页 / 共23页
JAVA程序设计第五章教学课件.ppt_第4页
第4页 / 共23页
JAVA程序设计第五章教学课件.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《JAVA程序设计第五章教学课件.ppt》由会员分享,可在线阅读,更多相关《JAVA程序设计第五章教学课件.ppt(23页珍藏版)》请在三一办公上搜索。

1、1,第5章 接口和包,本章主要讲述如下内容:接口的定义和使用;接口与抽象类的异同点;包的定义和使用;,2,5.1 接口,引入接口的原因:在程序设计中经常遇到这样一个问题:有些类互不相关,但却具有相似的方法。并且这些方法在各个类中的实现互不相同。我们不能为这些类定义一个共同的父类,但又希望在程序中体现出它们共同的接口。,3,5.1.1 接口的定义和应用,接口是一系列常量和空方法的集合,它提供了多个类共同的方法,但不限制每个类如何实现这些方法。Java允许一个类同时实现多个接口,相当于实现多继承的功能。,4,5.1.1 接口的定义和应用(续),声明一个接口的语法格式:,public interfa

2、ce interfaceName extends super-interface-Listtype ConstantName=value;type MethodName(Parameter lists);,5,5.1.1 接口的定义和应用(续),接口中不能声明任何变量和构造函数。如果一个类实现多个接口,应该在接口名之间用逗号隔开。当一个类实现接口时,必须实现接口中给出的空方法,若实现接口的类是一个抽象类,可以把实现接口的任务交给子类去实现。例如:,/程序5-1interface Sortable/定义一个接口 int Compare(Sortable s);,class Sort/定义一个排序

3、类,仅有一个静态的方法 public static void SelectSort(Sortable a)int i,j,k;Sortable temp;for(i=0;ia.length-1;i+)/选择排序 k=i;for(j=i+1;ja.length;j+)if(ak.Compare(aj)0)k=j;temp=ai;ai=ak;ak=temp;,class Student implements Sortable/定义一个学生类private int score;Student(int x)score=x;/实现接口Sortable中的方法public int Compare(Sort

4、able s)Student st=(Student)s;/类型强制转换return score-st.score;public String toString()return score=+score;,class Rectangle implements Sortable/矩形类也实现了接口private int length,width;Rectangle(int x,int y)length=x;width=y;int area()return length*width;public int Compare(Sortable s)/实现接口Rectangle rec=(Rectangl

5、e)s;/类型强制转换return area()-rec.area();public String toString()return area=+area();,public class interfaceTest public static void main(String args)Student stud=new Student20;int i;for(i=0;istud.length;i+)studi=new Student(int)(Math.random()*100);Sort.SelectSort(stud);/排序for(i=0;istud.length;i+)System.o

6、ut.println(studi.toString();,Rectangle R=new Rectangle10;for(i=0;iR.length;i+)Ri=newRectangle(int)(Math.random()*10),(int)(Math.random()*10);Sort.SelectSort(R);/排序for(i=0;iR.length;i+)System.out.println(Ri.toString();,12,5.1.1 接口的定义和应用(续),接口中定义的变量实际上是常量,必须给出它们的初始值,实现接口的类可以自由引用这些常量。例如:,/程序5-2的部分inter

7、face constant int EXCELLENT=5;int GOOD=4;int PASS=3;int FAIL=2;,13,5.1.1 接口的定义和应用(续),在类中实现接口中方法时,方法的特征必须和接口中声明的方法特征保持一致;实现方法时必须在方法前加上public;若一个类没有对接口中的方法具体实现,那么必须将该类声明为abstract类。例如:,interface inter/接口void methodA();abstract class Derived1 implements inter/此处不需要写出methodA()的原型class Derived2 extends De

8、rived1 public void methodA()/实现方法System.out.println(Hi,methodA);,15,5.1.2 接口和抽象类的异同点,接口和抽象类的相同点:,(1)都有空的方法,都必须在子类中实现这些方法。(2)都不能用new关键字来创建这两种类型的对象。(3)都可以具有继承关系。(4)接口和类一样可以具有public属性。,16,5.1.2 接口和抽象类的异同点(续),接口和抽象类的不同点:,(1)在抽象类中,空的方法必须加abstract关键字,而在接口中不需要。(2)在抽象类中,除空的方法外,可以定义实例变量和非空的方法,而在接口中,只能定义常量和空的

9、方法。(3)接口允许多继承,类仅支持单继承。,17,5.2 包,在Java中可以将自己写的类,按一定的方法归属于不同的子目录中(包)。在缺省情况下,Java将所有的类归属一个缺省包中。在不同的包中可以有同名的类存在。Java中的包与C+中的名字空间相似。,18,5.2.1 package语句,package语句告诉编译器当前类属于哪个包。如果没有package语句,类就存放在无名的缺省包中(即当前目录中)。引进包的概念主要是为了名字冲突。格式:package pkglpkg2pkg3;,19,5.2.2 import语句,import语句位于package语句之后,类的定义之前;格式:impo

10、rt package1.package2.(class-name|*);采用*号不影响程序的运行性能,但会影响编译速度。指明具体类比引入整个包更为合理。,20,5.2.3 包应用举例,package Base;/将该类存放在d:myjavaBase包中public class Base int friend_data=1;/友元成员public int public_data=2;/public成员private int private_data=3;/private成员protected int protected_data=4;/protected成员,package Derived;/将

11、Base类存放在Derived包中import Base.*;/需要使用Base包中的类public class Derived extends BaseBase a=new Base();/为了让testData类能调用该方法,修改为publicpublic void dataUse()/System.out.println(a.friend_data);/不能访问 System.out.println(a.public_data);/System.out.println(a.private_data);/不能访问/System.out.println(a.protected_data);/不能访问,/testData.java文件的内容如下:import Derived.*;/需要使用Derived包中的类/该类位于工作目录,不需要package语句public class testData public static void main(String args)Derived d=new Derived();d.dataUse();,23,思考和练习,P98 36,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号