




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计实用教程(第4版),第4章接口、内部类和JavaAPI基础,4.1接口与实现接口的类4.2内部类和内部接口4.3JavaAPI基础4.4泛型,Java程序设计实用教程(第4版),第4章接口、内部类和JavaAPI基础,内容和要求:理解接口的作用,理解接口和实现接口的类的关系,掌握声明接口、一个类实现多个接口的声明和使用方法。理解内嵌类型的概念,掌握声明内部类的方法。熟悉Java语言包和实用包中的常用类。重点:接口和实现接口的类;JavaAPI。难点:接口,内部类,JavaAPI。,Java程序设计实用教程(第4版),4.1接口与实现接口的类,声明接口publicinterface接口extends父接口列表publicstaticfinal数据类型成员变量=常量值;publicabstract返回值类型成员方法(参数列表);publicinterfaceArea/可计算面积接口publicabstractdoublearea();/计算面积接口不能被实例化,Java程序设计实用教程(第4版),可计算周长接口,publicinterfacePerimeterpublicabstractdoubleperimeter();/抽象方法,计算周长,Java程序设计实用教程(第4版),2.声明实现接口的类,修饰符class类extends父类implements接口列表例如,publicabstractclassClosedFigureextendsFigureimplementsArea,Perimeter实现接口的非抽象类必须实现所有接口中的所有抽象方法,否则声明为抽象类,Java程序设计实用教程(第4版),图4.1ClosedFigure类的继承关系,Java程序设计实用教程(第4版),例4.1接口与实现接口的类。,声明可计算体积接口Volume如下:publicinterfaceVolume/可计算体积接口publicabstractdoublevolume();/抽象方法,计算体积,Java程序设计实用教程(第4版),(2)声明柱体类Cylinder,实现Area和Volume接口。,Java程序设计实用教程(第4版),3.接口是多继承的,publicinterfaceSolidextendsArea,Volume/立体接口,继承Area和Volume接口publicclassGlobeextendsObjectimplementsSolid/球类,实现Solid接口,Java程序设计实用教程(第4版),4.接口是引用数据类型,ClosedFigurefig=newEllipse(point,10,20);/父类对象fig引用椭圆子类实例Areaar=fig;/Area接口对象ar引用实现Area接口的ClosedFigure类的Ellipse子类实例ar.area()/运行时多态Cylindercylinder=newCylinder(fig,10);/椭圆柱ar=cylinder;/ar引用实现Area接口的Cylinder类的实例Volumevol=cylinder;/Volume接口对象vol引用实现Volume接口的Cylinder类的实例ar.area()/运行时多态vol.volume(),Java程序设计实用教程(第4版),图4.4接口声明的抽象方法在实现该接口的多个类中表现出运行时多态性,Java程序设计实用教程(第4版),2.接口与抽象类的区别,抽象类为子类约定方法声明,抽象类可以给出部分实现,包括构造方法等;抽象方法在多个子类中表现出多态性。类的单继承,使得一个类只能继承一个父类的约定和实现。接口为多个互不相关的类约定某一特性的方法声明,在类型层次中表达对象拥有的属性。接口没有实现部分。接口是多继承的。一个类实现多个接口,就具有多种特性,也是多继承的。,Java程序设计实用教程(第4版),3.单继承和多继承,类的单继承的优点,Java程序设计实用教程(第4版),3.单继承和多继承,类的单继承的优点,Java程序设计实用教程(第4版),(2)接口的多态性,Java程序设计实用教程(第4版),(3)类的多继承存在二义性问题,Java程序设计实用教程(第4版),4.2内部类和内部接口,publicclassPixel/像素类,外层类型,外部类publicstaticinterfaceColorConstant/颜色常量接口,静态内部接口,类型嵌套publicstaticclassColorextendsObjectimplementsColorConstant/颜色类,静态内部类类型嵌套:静态内嵌类型Pixel.Colorcolor=newPixel.Color(255,255,255);对象嵌套:实例内嵌类型,Java程序设计实用教程(第4版),作为类型的特性,内嵌类型不能与外层类型同名。内部类中可以声明成员变量和成员方法。内部类可以继承父类或实现接口。可以声明内部类为抽象类,该抽象类必须被其他内部类继承;内部接口必须被其他内部类实现。,Java程序设计实用教程(第4版),2.作为成员的特性,使用点运算符“.”引用内嵌类型:外层类型.内嵌类型Pixel.Color内嵌类型具有类中成员的4种访问控制权限。当内部类可被访问时,才能考虑内部类中成员的访问控制权限。内嵌类型与其外层类型彼此信任,能访问对方的所有成员。内部接口总是静态的。内部类可声明是静态的或实例的,静态内部类能够声明静态成员,但不能引用外部类的实例成员;实例内部类不能声明静态成员。,Java程序设计实用教程(第4版),2.作为成员的特性,在实例内部类中,使用以下格式引用或调用外部类当前实例的成员变量或实例成员方法:外部类.this.成员变量/引用外部类当前实例的成员变量外部类.this.实例成员方法(参数列表)/调用外部类当前实例的成员方法,Java程序设计实用教程(第4版),【例4.4】像素类,声明颜色常量内部接口和颜色内部类。,图4.8颜色RGB整数结构图,Java程序设计实用教程(第4版),4.3JavaAPI基础,4.3.1java.lang包中的基础类库4.3.2java.util包中的工具类库,Java程序设计实用教程(第4版),4.3.1java.lang包中的基础类库,Object类packagejava.lang;publicclassObjectpublicObject()/构造方法publicfinalClassgetClass();/返回当前对象所在的类publicbooleanequals(Objectobj)/比较当前对象与obj是否相等publicStringtoString()/返回当前对象的信息字符串protectedvoidfinalize()throwsThrowable/析构方法,Java程序设计实用教程(第4版),2.Math数学类,publicfinalclassMathextendsObjectpublicstaticfinaldoubleE=2.7182818284590452354;/常量publicstaticfinaldoublePI=3.14159265358979323846;/publicstaticdoubleabs(doublea)/求绝对值publicstaticdoublerandom()/返回一个0.01.0之间的随机数publicstaticdoublepow(doublea,doubleb)/返回a的b次幂publicstaticdoublesqrt(doublea)/返回a的平方根值publicstaticdoublesin(doublea)/返回a的正弦值,Java程序设计实用教程(第4版),3.Comparable可比较接口,publicinterfaceComparableintcompareTo(Tcobj)/比较对象大小其中,是Comparable接口的参数,表示一个类。,Java程序设计实用教程(第4版),MyDate类对象比较大小,publicclassMyDateimplementsComparablepublicintcompareTo(MyDated)/约定比较日期大小的规则,返回-1、0、1if(this.year=d.year,Java程序设计实用教程(第4版),4.基本数据类型的包装类,8个Byte、Short、Integer、Long、Float、Double、Character、Boolean。,Java程序设计实用教程(第4版),Integer,publicfinalclassIntegerextendsNumberimplementsComparablepublicstaticfinalintMIN_VALUE=0 x80000000;/最小值-231publicstaticfinalintMAX_VALUE=0 x7fffffff;/最大值231-1privatefinalintvalue;/私有最终变量,构造时赋值publicInteger(intvalue)/构造方法publicInteger(Strings)throwsNumberFormatExceptionpublicstaticintparseInt(Strings)throwsNumberFormatException/将字符串转换为整数,静态方法,Java程序设计实用教程(第4版),Integer,publicStringtoString()/覆盖Object类中方法publicstaticStringtoBinaryString(inti)/将i转换成二进制字符串,i时,省略高位0publicstaticStringtoOctalString(inti)/将i转换成八进制字符串,i时,省略高位0publicstaticStringtoHexString(inti)/将i转换成十六进制字符串publicbooleanequals(Objectobj)/覆盖Object类中方法publicintcompareTo(Integeriobj)/比较两个对象值大小,返回1、0或1,Java程序设计实用教程(第4版),Double类,publicfinalclassDoubleextendsNumberimplementsComparablepublicDouble(doublevalue)publicDouble(Strings)throwsNumberFormatExceptionpublicstaticdoubleparseDouble(Strings)throwsNumberFormatException/将串s转换为浮点数publicdoubledoubleValue()/返回当前对象中的浮点数值,Java程序设计实用教程(第4版),5.String字符串类,publicfinalclassStringextendsObjectimplementsjava.io.Serializable,Comparable,CharSequenceprivatefinalcharvalue;/字符数组,最终变量publicString()/构造方法publicString(Stringoriginal)publicStringtoString()/覆盖Object类中方法publicintlength()/返回字符串的长度publicbooleanequals(Objectobj)/比较字符串是否相等publicbooleanequalsIgnoreCase(Strings)/忽略字母大小写publicintcompareTo(Strings)/比较字符串的大小publicintcompareToIgnoreCase(Stringstr),Java程序设计实用教程(第4版),Person类按姓名比较对象大小,publicclassPersonimplementsComparablepublicintcompareTo(Personp)pareTo();/比较姓名大小,调用String类的compareTo()方法【思考题4-1】修改MyDate类的compareTo(d)方法实现,返回两个日期相距的天数。Person类按出生日期比较对象大小。Student类能否比较对象大小?能否实现按学号比较对象大小?为什么?,Java程序设计实用教程(第4版),7.Class类,publicfinalclassClasspublicStringgetName()/返回当前类名字符串publicClassgetSuperclass();/返回当前类的父类publicPackagegetPackage()/返回当前类所在的包this.getClass().getName()this.getClass().getSuperclass().getName()this.getClass().getPackage().getName(),Java程序设计实用教程(第4版),8.System系统类,publicfinalclassSystemextendsObjectpublicfinalstaticInputStreamin=nullInputStream();publicfinalstaticPrintStreamout=nullPrintStream();publicfinalstaticPrintStreamerr=nullPrintStream();publicstaticnativeviodarraycopy(Objectsrc,intsrc_pos,Objectdst,intdst_pos,intlength)/复制数组publicstaticvoidexit(intstatus)/结束当前运行的程序publicstaticnativelongcurrentTimeMillis();/获得当前日期和时间,返回从1970-1-100:00:00开始至当前时间的累计毫秒数publicstaticPropertiesgetProperties()/获得系统全部属性publicstaticStringgetProperty(Stringkey)/获得指定系统属性,Java程序设计实用教程(第4版),复制数组,publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)例如:inta=1,2,3,4,5;intb;arraycopy(a,0,b,1,4);/将a数组的前4个元素复制到b数组中,Java程序设计实用教程(第4版),9.Runtime运行时类,publicclassRuntimeextendsObjectpublicstaticRuntimegetRuntime()/返回与当前应用程序相联系的运行时环境publiclongtotalMemory()/返回系统内存空间总量publiclongfreeMemory()/返回系统内存剩余空间的大小,Java程序设计实用教程(第4版),4.3.2java.util包中的工具类库1.日期类,Date日期类publicclassDateextendsObjectimplementsjava.io.Serializable,Cloneable,ComparablepublicDate()/获得系统当前日期和时间的Date对象this(System.currentTimeMillis();publicDate(longdate)/以长整型值创建Date对象publicintcompareTo(Datedate)/比较日期大小,返回0、1、-1,Java程序设计实用教程(第4版),(2)Calendar类,publicabstractclassCalendarextendsObjectimplementsSerializable,Cloneable,ComparablepublicstaticfinalintYEAR/年,常量publicstaticfinalintMONTH/月publicstaticfinalintDATE/日publicstaticfinalintHOUR/时publicstaticfinalintMINUTE/分publicstaticfinalintSECOND/秒publicstaticfinalintMILLISECOND/百分秒publicstaticfinalintDAY_OF_WEEK/星期,Java程序设计实用教程(第4版),(2)Calendar类,publicabstractclassCalendarextendsObjectimplementsSerializable,Cloneable,ComparablepublicstaticCalendargetInstance()/创建实例publicintget(intfield)/返回日期publicfinalDategetTime()/返回对象中的日期和时间publicfinalvoidsetTime(Datedate)/设置对象的日期和时间publicfinalvoidset(intyear,intmonth,intdate)publicfinalvoidset(intyear,intmonth,intdate,inthour,intminute)例如,Calendarnow=Calendar.getInstance();/获得实例intyear=now.get(Calendar.YEAR);/获得对象中的年份值,Java程序设计实用教程(第4版),(3)GregorianCalendar类,publicclassGregorianCalendarextendsCalendarpublicGregorianCalendar()/以当前日期时间创建对象publicGregorianCalendar(intyear,intmonth,intday)publicGregorianCalendar(intyear,intmonth,intday,inthour,intminute,intsecond)publicbooleanisLeapYear(intyear)/判断是否闰年/例3.2MyDate类中,获得当前日期对象的年份值thisYear=newGregorianCalendar().get(Calendar.YEAR);【例4.3】月历。,Java程序设计实用教程(第4版),2.Comparator比较器接口,publicinterfaceComparatorpublicabstractbooleanequals(Objectobj);/比较两个比较器对象是否相等publicabstractintcompare(Tcobj1,Tcobj2);/指定比较两个对象大小的规则【例4.4】Person类的多种比较规则。(1)约定多种比较对象大小的规则(2)约定多种比较对象相等的规则,Java程序设计实用教程(第4版),3.Arrays数组类,排序publicstaticvoidsort(Objecta)publicstaticvoidsort(Ta,Comparatorc)二分法(折半)查找publicstaticintbinarySearch(Objecta,Objectkey)publicstaticintbinarySearch(Ta,Tkey,Comparatorc),Java程序设计实用教程(第4版),【例4.5】对象数组的排序和查找。,Personvalue=newPerson(),newStudent(),;Person对象数组按姓名排序和查找/默认由Person类compareTo()方法约定比较对象大小的规则Arrays.sort(value);/value对象数组按姓名升序排序inti=Arrays.binarySearch(value,newPerson(白杨,null);/在value中以二分法查找指定对象,Java程序设计实用教程(第4版),【例4.5】对象数组的排序和查找。,Person对象数组按出生日期排序/由Comparator比较器对象的compare()方法约定比较对象大小的规则Arrays.sort(value,newCompareBirthday();/value对象数组按出生日期升序排序MyDatedate=newMyDate(1992,3,15);i=Arrays.binarySearch(value,newPerson(,date),newCompareBirthday();,Java程序设计实用教程(第4版),【思考题4-4】,Person类分别按姓氏、出生年份或姓名的模糊查询进行排序和查找。Student类分别按学号、系、专业等排序和查找。,Java程序设计实用教程(第4版),4.4泛型,泛型声明修饰符class类extends父类implements接口列表publicinterface接口extends父接口列表publicstatic返回值类型方法(参数列表)throws异常类列表类型变量extends父类型列表,Java程序设计实用教程(第4版),2.泛型的必要性,Object对象数组Objectvalue=newObject(),xyz,newInteger(123);valuei.toString()/运行时多态value1.length()/编译错,Object类没有声明length()方法,Java程序设计实用教程(第4版),(2)Comparable对象数组,Comparablevalue=abc,xyz,def,ghi,newInteger(123);/数组元素类型不同pareTo(value1)/两个数组元素可比较对象大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年度注册电气工程师练习题附参考答案详解(达标题)
- 2025公务员(国考)高分题库附参考答案详解(A卷)
- 2025某科技公司与电信运营商关于手机话费充值服务之合同
- 2025年高校教师资格证之《高等教育法规》考前冲刺测试卷包有答案详解
- 执业药师之《西药学专业一》考前冲刺测试卷附有答案详解及参考答案详解【突破训练】
- 智慧树知道网课《网络营销(山东联盟-山东青年政治学院)》课后章节测试答案
- 2025年粮油食品检验人员模拟题库及完整答案详解【易错题】
- 2025年超市产品陈列销售合同协议书范本(详细展示文档)
- 浙江省交通工程管理中心招聘3人(2024年第二批)笔试备考题库及参考答案详解1套
- 2025年远程教育的在线考试系统
- 2025年“学宪法、讲宪法”主题活动知识竞赛题库及答案
- 2024年毕节威宁自治县招聘城市社区工作者真题
- 2025年度2025年少先队知识测试题及答案
- 2025年电子专用设备制造行业研究报告及未来行业发展趋势预测
- GB/T 15234-2025塑料平托盘
- 山东省汽车维修工时定额(T-SDAMTIA 0001-2023)
- 水调歌头-公开课教学设计 省赛一等奖
- 《番茄工作法图解》课件
- 报价单模板及范文(通用十二篇)
- 蒂森克虏伯电梯MC2-C调试介绍
- 苏教版三年级数学上册《间隔排列》作业纸(大组教研)
评论
0/150
提交评论