




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章包、接口,主要任务介绍Java中包(package)、接口(interface)的使用方法。,本章主要内容,1.包2.接口,6.1包,当声明的类很多时,类名就有可能冲突,这就需要一种机制来管理类名,这就是包。包是Java提供的一种区别类名空间的机制,是类的组织方式,一个包对应一个文件夹,包中还可以有包,称为包等级。如同文件夹中可以有子文件夹。,6.1包,在源程序中可以声明类所在的包,就像保存文件时要说明文件保存在哪个文件夹中一样。同一个包中类名不能重复,不同包中可以有相同的类名。当源程序中没有声明类所在的包时,Java将类放在默认包中,即运行编译器的当前文件夹中。这时,不能出现重复的类名。,6.1.1Java的系统包,Java提供了大量的类,为便于管理和使用,分为不同的包。包又称类库或API包,所谓API(ApplicationProgramInterface)即应用程序接口。所有JavaAPI包都以“java.”开头,以区别用户创建的包。,1java.lang包,java.lang包中包含有以下的主要类:数据类型包装类,对应8个基本数据类型,数据类型包装类也有8个:BigDecimal、BigInteger、Byte、Double、Float、Integer、Long、Short。提供基本数学函数的Math数学类。用于字符串处理的String类和StringBuffer类。System系统类。系统资源和标准输入输出的方法。Object类。它是Java类层次的根。,2java.util包,包含一些实用工具类。主要有:日期Date类、堆栈Stack类、随机数Random类、向量Vector类等。,3java.io包,是Java的输入输出类库,Java语言的文件操作都是由该类库中的输入输出类来实现的。java.io包除了包含标准输入、输出类外,还有缓存流、过滤流、管道流和字符串类等。,4java.awt包,提供了创建图形用户界面的全部工具。它包括许多我们熟悉的图形组件(component)类,如窗口、对话框、按钮、复选框、列表、菜单、滚动条和文本区等类;,5java.applet包,java.applet是所有小应用程序的基础类库。它只包含了一个Applet类,所有小应用程序都是从该类中派生的。,Java提供的最新内容,如图所示。,6.1.2包的引用,1导入包语句如果要使用某个包中的类,要在Java程序的开头添加import语句,指明源程序要使用含有该类的包。如下面的语句:importjava.awt.Graphics;importjava.applet.*;,2包的路径,要引入Java包,仅在程序中添加import语句还不够,还要告诉系统,程序运行时到哪里去找Java包。这个功能由环境变量classpath来完成。由于Java使用文件系统来存储包和类,类名就是文件名,包名就是文件夹名,所以进行环境变量的设置就是找到存放包的路径,如“E:j2sdk1.4.2_01lib;”。,6.1.3创建自定义包,1自定义包的声明方式要建立自定义包,格式为:声明包语句必须添加在源程序的第一行,表示该文件的全部类都属于这个包。,例6.1在源程序YMD.java中,创建了YMD类,该类具有计算今年的年份,可以输出一个带有年月日的字符串的功能。,packageMypackage;/声明了一个Mypackage包importjava.util.*;/引用java.util包publicclassYMDprivateintyear,month,day;publicstaticvoidmain(Stringarg3),publicYMD(inty,intm,intd)year=y;month=(m=1),publicstaticintthisyear()returnCalendar.getInstance().get(Calendar.YEAR);/获得当年的年份publicintyear()returnyear;/获得年份publicStringtoString()returnyear+-+month+-+day;/转化为字符串,例6.2本程序中,引用了例6.1创建的放入Mypackage包中的YMD类,使用YMD类类中的方法和P3类中的方法,给定某人的出生日期计算出该人年龄,并输出该人姓名,年龄,出生日期。,importMypackage.YMD;/引用Mypackage包中的YMD类publicclassP3privateStringname;privateYMDbirth;publicstaticvoidmain(Stringargs)P3a=newP3(张驰,1990,1,11);a.output();,publicP3(Stringn1,YMDd1)name=n1;birth=d1;publicP3(Stringn1,inty,intm,intd)this(n1,newYMD(y,m,d);/初始化变量与对象,publicintage()returnYMD.thisyear()-birth.year();/计算年龄publicvoidoutput()System.out.println(姓名:+name);System.out.println(出生日期:+birth.toString();System.out.println(今年年龄:+age();,程序运行结果如图所示。,第一个程序声明了自定义包Mypackage,包中存放有YMD类。第二个程序引入了自定义包Mypackage中的类YMD。,2设置包的路径,首先在存放源程序的文件夹中使用自定义包名建立一个子文件夹,例如,在“E:java程序”文件夹之中创建一个与包同名的文件夹E:java程序Mypackage,并将编译过的class文件放入该文件夹中。注意:包名与文件夹名大小写要一致。再添加环境变量classpath的路径如下:E:j2sdk1.4.2_01lib;E:java程序,3创建包等级,用圆点“.”可以将包名分隔为不同的包等级,即建立不同的文件夹。格式为:如java.awt.image就是一个等级包,反映Java开发系统的层次关系,这个包对应Windows文件系统中的javaawtimage文件夹。如果要修改包名就要修改文件夹名。,6.2接口,什么是接口?所谓接口可以看作是没有实现的方法和常量的集合。接口与抽象类相似,接口中的方法只是做了声明,而没有定义任何具体的操作方法。使用接口是为了解决Java语言中不支持多重继承的问题。,6.2.1实现系统提供的接口,Java已经创建了许多系统接口,如MouseListener和MouseMotionListener接口,定义了处理鼠标事件的方法,当一个类实现这两个接口后,就可以处理这些鼠标事件。在接口中的方法只有定义没有实现。在接口中定义的变量全部隐含为final和static,表明这些变量不能被实现接口方法的类改变,这些变量还必须设置初值。如果接口为public的,则接口中的方法和变量也全部为public,否则只能被处于同一包中的成员访问。,例6.3在类中实现MouseListener和MouseMotionListener两个接口。,importjava.applet.Applet;importjava.awt.*;importjava.awt.event.*;publicclassDrawLextendsAppletimplementsMouseListener,MouseMotionListenerintx1,y1,x2,y2;,publicvoidinit()addMouseListener(this);addMouseMotionListener(this);publicvoidpaint(Graphicsg)g.drawL(x1,y1,x2,y2);publicvoidmousePressed(MouseEvente)/记录起点坐标x1=e.getX();y1=e.getY();,publicvoidmouseClicked(MouseEvente)publicvoidmouseEntered(MouseEvente)publicvoidmouseExited(MouseEvente)publicvoidmouseReleased(MouseEvente)publicvoidmouseDragged(MouseEvente)/记录终点坐标x2=e.getX();y2=e.getY();repaint();publicvoidmouseMoved(MouseEvente),在DrawL类中实现了MouseListener接口中定义的5个方法:,publicvoidmousePressed(MouseEvente)/记录起点坐标x1=e.getX();y1=e.getY();publicvoidmouseClicked(MouseEvente)publicvoidmouseEntered(MouseEvente)publicvoidmouseExited(MouseEvente)publicvoidmouseReleased(MouseEvente),实现MouseMotionListener接口的两个方法:,publicvoidmouseDragged(MouseEvente)/记录终点坐标x2=e.getX();y2=e.getY();repaint();publicvoidmouseMoved(MouseEvente),6.2.2创建自定义接口,创建自定义接口要使用声明接口语句,格式如下:修饰符/静态常量及方法声明,例6.4_1在下面的程序中声明了一个自定义接口Nl。用来计算一个人年龄,interfaceNl/年龄接口intyear=2003;intage();voidoutput();说明:在Nl接口中声明了两个方法:age()和output()以及一个整型常量year。,例6.4_2实现接口Nl的例子。,publicclassR1implementsNl/实现年龄接口Stringxm;intcsrq;/类自己的成员变量publicR1(Stringn1,inty)/类构造方法xm=n1;csrq=y;publicintage()/实现接口的方法returnyear-csrq;/这里直接使用了接口的常量year,publicvoidoutput()/实现接口的方法System.out.println(this.xm+今年的年龄是+this.age()+岁);publicstaticvoidmain(Stringargs)/类自己的成员方法R1a=newR1(张驰,1990);a.output();,程序运行结果如图所示:,6.2.3接口的继承关系,1接口的单继承2接口的多重继承,例6.5接口的单继承。,interfaceAvoidF1();interfaceBextendsAvoidF2();说明:接口B将继承接口A中的所有变量和方法,这种接口之间的继承称为单继承。接口之间的继承与类的继承一样使用关键字extends。,例6.6在类中引用继承的接口的方法。,classMyClassimplementsBvoidF1()voidF2()说明:在这个例子中MyClass实现了接口B,因为接口B继承了接口A,所以接口B实际上还包含了接口A中的方法F1。因此在类MyClass中必须实现接口A中的方法F1和接口B中的方法F2。,2接口的多重继承,在Java语言中,不支持类的多重继承。但是支持接口的多重继承,其语法格式如下:interface接口名extends接口名1,接口名2,可见接口的多重继承只是在单继承的基础上再加上几个接口,并把这些接口用逗号分隔开。,习题,1包有什么作用?有哪些类型的包?创建一个自己的包,包含四个类。2接口有什么作用?创建一个接口并在类中实现这个接口。,10下面的那个java源文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师体育学期工作总结
- 公司用电安全培训材料课件
- 辽宁省2025年成人高校招生考试英语(高起点)练习题库及答案
- 广东省2025年成人高考医学类复习题及答案
- 黑龙江省2025年全国成人高等学校招生统一考试理、体育类综合练习题及答案
- 公司汛期安全培训内容课件
- 正规的不定期承包合同样本7篇
- 护理查房演绎经验总结
- 配液系统工作总结
- 民法典婚姻篇培训
- 金属非金属矿山安全管理制度汇编
- 三位数加减三位数竖式计算题200道及答案
- 物流地产行业报告:物流地产商业模式与投资解析
- 朝花夕拾鲁迅笔下的人物
- DB32-T 4638-2024 智能泵站技术导则
- 工程造价咨询服务方案(技术方案)
- 小学教师师德师风考核表
- 离婚网上申请书
- 保温楼面挤塑聚苯板XPS施工方案xps挤塑聚苯板保温施工方案
- 高中重点语法精讲康志强语法
- 管办分开的实践与体会-上海申康医院发展中心课件
评论
0/150
提交评论