Java语言程序设计第2版(郑莉)课后习题答案_第1页
Java语言程序设计第2版(郑莉)课后习题答案_第2页
Java语言程序设计第2版(郑莉)课后习题答案_第3页
Java语言程序设计第2版(郑莉)课后习题答案_第4页
Java语言程序设计第2版(郑莉)课后习题答案_第5页
已阅读5页,还剩161页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java语言程序设计第2版(郑莉)第二章习题答案什么是对象、类,它们之间的联系?答:1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体;在程序中对象是指一组变量和相关方法的集合。2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象!3)两者的关系:对象是类的具体实例.。什么是面向对象的程序设计方法?它有那些基本特征?答:面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务为中心来描述系统。它把编程问题视为一个数据集合,数

2、据相对于功能而言,具有更强的稳定性。它的特征:抽象,封装,继承,多态。3(无用)4请解释类属性、实例属性及其区别。答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。5请解释类方法、实例属性及其区别。答:实例方法表示特定对象的行为,在声明时前面不加static修饰符,在使用时需要发送给一个类实例。类方法也称为静态方法,在方法声明时前面需加static修饰符,类方法表示具体实例中类对象的共有行为。区别:实例方法可以直接访问实例变量,调用实例方法,实例方法可以直接访问类变量,调用类方法;类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法;6

3、类的访问控制符有哪几种?具体含义及其区别。答:类的访问控制符只有public(公共类)及无修饰符(默认类)两种。区别:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其他类可以使用类。7类成员的访问控制符有哪几种?他们对类成员分别有哪些访问限制的作用?答:类成员的访问控制符有public,private,protecte及无修饰符.public(公有的):用public修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限).Private(保护的):类中限定为private的成员只能被这个类本身访问,在类

4、外不可见。proteced(保护的)用该关键字修饰的成分是受保护的,只可以被同一类及其子类的实例对象访问。无修饰符(默认的):public,private,protected这个三个限定符不是必须写的。如果不写,贝U表明是“friendly”相应的成分可以被所在保重的各类访问。8简述构造方法的特点?答:构造方法主要有以下特点:(1)构造方法的方法名与类名相同;(2)构造方法没有返回类型(修饰符void也不能有);(3)构造方法通常被声明为公有的(public);(4)构造方法可以有任意多个参数;(5)构造方法的主要作用是完成对象的初始化工作;(6)构造方法不能在程序中显式的调用;(7)在生成一

5、个对象时,系统会自动调用该类的构造方法为新生成的对象初始化。9如果在类声明中声明了构造方法,系统是否还提供默认的构造方法?答:用户在进行类声明时,如果没有声明任何构造方法,系统会赋给此类一个默认(无参)的构造方法。但是,只要用户声明了构造方法,即使没有声明无参的构造方法,系统也不会再赋默认的构造方法。10:声明Patient类表示在门诊室中的病人。此类对象应包括nameCastring)sex(achar)、age(aninteger)、weight(afloat。、allergies(aboolean).声明存取及修改方法。在一个单独的累中,声明测试方法,并生成两个patient的例子:At

6、ientapril=newPatient();April.setname(“zhangli”)April.setSex(f);April.setage(330;April.setweigeht(154.72);April.setalolergies(true);System.out.println(“那么:”+april.getname();System.out.println(“sex:”+april.getsex();System.out.println(“age:”+april.getage();System.outprintln(“weught:”+april.getweight();

7、System.out.println(“allergies:”+april.getallergies();声明并测试toString()方法显示一个病人的aga、sex、name及allergies属性。答:publicclassPatientprivateStringname;privatecharsex;privateintage;privatefloatweight;privatebooleanallergies;publicvoidsetname(Stringa)name=a;publicvoidsetsex(charb)sex=b;publicvoidsetage(intc)age=

8、c;publicvoidsetweight(floatd)weight=d;publicvoidsetallergies(booleane)allergies=e;publicStringgetname()returnname;publicchargetsex()returnsex;publicintgetage()returnage;publicfloatgetweight()returnweight;publicbooleangetallergies()returnallergies;publicclassTextpublicstaticvoidmain(Stringargs)+april

9、.getname();+april.getsex();+april.getname();+april.getsex();+april.getage();+april.getweight();+april.getallergies();MiciosoEtWindovjsXPI.皈丰左ZU:!?!反市又片斤985200XMicsOoFtCop=C=sDocumentsmndSet;1;ns(sjAGClJO.W0LI)=SjavajavacFatientjavaD二8xjawa.Jai=iacText=Jawa.D-TextNamisS立1*1曰.mrlLid_sex=fm曰曰二33weisgrl

10、-it=54-721lei:*!grsstruesU=Saava11:声明并测试一个复数类,其方法包括toString()及复数的加、减、乘运算。答:publicclassComplexprivatefloata;privatefloatb;publicStringtoString()if(a!=O)return(a+i+b);elsereturn(+b);publicComplex(floatafloatb)this.a=a;this.b=b;publicvoidAdd(Complexp)this.a+=p.a;this.b+=p.b;publicvoidDecrease(Complexp)

11、this.a-=p.a;this.b-=p.b;publicvoidMultiply(Complexp)this.a=this.a*p.a;this.b=this.b*p.b;publicclassComplexTexterpublicstaticvoidmain(Stringargs)Complexa=newComplex(2,4);Complexb=newComplex(5,8);a.Add(b);System.out.println(a.toString()+n);a.Decrease(b);System.out.println(a.toString()+n);a.Multiply(b)

12、;System.out.println(a.toString()+n);D:Ja.vajavacCompLcx-Java.D:jauajauacConplexTexterJav-aJavaConplexTextei*7_0i+12.05.01+8.010.0i+32.0D:12:什么是UML?它由哪几部分组成?答:UML是图形化()即可视化的建模语言,成为面向对象建模的标准语言。它由四部分组成:(1)视图(2)图(3)模型元素(4)通用机制常用的类与类之间的关系有哪几种。答:有关联、依赖、流、泛化、实现、使用。考虑学院、系及教员应该具有哪些属性,并画出它们之间关系的类图。第三章课后习题答案1设

13、N为自然数:n!=1*2*3*.*n称为n的阶乘,并且规定0!=1试编程计算2!,4!,6!he10!并将结果输出到屏幕上。答:publicclassMuipublicstaticvoidmain(Stringargs)JLiElf-360iEIO.BJLiElf-360iEIO.BJLiElf-360iEIO.BJLiElf-360iEIO.Binti,n;floats;for(n=0;n=10;n二n+2)if(n=0)System.out.println(0!=1n);elses=1;for(i=1;i=n;i+)s=s*i;System.out.println(n+!二+s+n);”口

14、W口F左出工口日口wwMP5.1.2630版杈所有1TS5-HB01MieroaoFhCo口i7D口dspah,CrilJO.VCIpsjov.GMuipsXjLva.java.Flu.1Hf-1SIV*3.B4豐-呂4.0-72B.B2.编写程序,接收用户从键键盘上输入的三个整数x,y,z.从中选出最大和最小者,并编程实现。答:publicclassMathpublicstaticvoidmain(Stringargs)intIntArg=newintargs.length;for(inti=0;iIntArg1?IntArg0:IntArg1;max=maxIntArg2?max:IntA

15、rg2;min=IntArg0IntArg1?IntArg0:IntArg1;min=minjavacMath.Javap:jauajavaMath451678max=78min=16p:jaua3求出100一枚的宿舍,并将这些数在屏幕上5个乙杭地显示出来。答:publicclassSupublicstaticvoidmain(Stringargs)intn,i,k=O,y;for(n=2;n=100;n+)y=1;for(i=2;ijavacSujavaD:jauajauaSup35711131719232931374143475359167717983899?java_4使用java.Ia

16、ng.Math类,生成100个0-99之间的随机整数,找出他们之中的最大值和最小值,并统计大于50的整数个数。publicclassRandompublicstaticvoidmain(Stringargs)intMinNum,MaxNum,n=O;intarray二newint1OO;array0=(int)(Math.random()*100);MinNum=array0;MaxNum=array0;System.out.println(“数列为:);System.out.print(arrayO+);for(inti=0;i50)n+;if(arrayi=MaxNum)MaxNum=ar

17、rayi;if(arrayi=MinNum)MinNum二arrayi;System.out.print(arrayi+);System.out.println();System.out.println(MinNum=+MinNum);System.out.println(MaxNum=+MaxNum);System.out.println(大于50的整数个数有:+n);5接收用户从键盘上输入的两个整数,求两个数的最大公约数和最小公倍数,并输出。publicclassTest2publicstaticvoidmain(Stringargs)intI=newintargs.length;for(

18、inti=O;iargs.length;i+)Ii=lnteger.parselnt(argsi);intm,n,temp,t;if(l0jauacTestZ.javab:、我的文档桌面aua.TestZ6S:我的文档桌面6.从键盘上输入一件物品的价格(范围在0.105.00元.),假设用户支付了一张5元纸币,请列出一种找零的方案,使得纸币及硬币的个数最少。如3.68元,应为两元一张一元一张、五角一个、一角一个、五分一个、二分一个、一分一个。/Price类importjavaio.*;publicclassPricepublicstaticvoidmain(Stringargs)Systemo

19、utprintln(enteranumber(001500):);floata=KeyboardgetFloat();intc=(int)(a*100);intb=500-c;Systemoutprintln(找零如下:);if(b/200!=0)System.outprintln(b/200+张2元);b-=(b/200)*200;if(b/100!=0)System.out.println(b/100+张1元);b-=(b/100)*100;if(b/50!=0)System.outprintln(b/50+张5角);b-=(b/50)*50;if(b/20!=0)System.outpr

20、intln(b/20+张2角);b-=(b/20)*20;if(b/10!=0)System.outprintln(b/10+张1角);b-=(b/10)*10;if(b/5!=0)System.out.println(b/5+个5分);b-=(b/5)*5;if(b/2!=0)System.out.println(b/2+个2分);b-=(b/2)*2;if(b!=0)System.outprintln(b+个1分);/Keyboard类importjava.io.*;publicclassKeyboardstaticBufferedReaderinputStream=newBuffered

21、Reader(newInputStreamReader(System.in);publicstaticintgetInteger()tryreturn(Integer.valueOf(inputStream.readLine().trim().intValue();catch(Exceptione)e.printStackTrace();return0;publicstaticStringgetString()tryreturn(inputStream.readLine();catch(IOExceptione)return0;publicstaticfloatgetFloat()String

22、s=;tryBufferedReaderin=newBufferedReader(newInputStreamReader(System.in);s=in.readLine();return(FloatparseFloat(s);catch(IOExceptione)Systemoutprintln(输入非法!);return(0.0f);运行结果:Froblems*笹iawEdocp.ITecbi目tionf曰-PriceJavaApplicationO?PrcgrenterazmnfcET(0.01-5.00!I3.60栈零如下:丄肌元讨2分7什么是异常?解释抛出、捕获的含义。答:异常又称

23、为例外,是特殊的运行错误对象,在程序中可以强制编译器来处理程序运行中的发生的并非由程序本身所造成的错误;抛出异常:把生成异常对象并提交的过程称为抛出异常;抛出异常是java中一个程序处理动作,检查异常时要么在方法中声明一个异常抛出,用try-catch语句捕获异常,并进行处理。8.简述Java的异常处理机制。答:java中声明了很多异常类,每个异常类都代表了一种运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。一旦一个异常对象产生了,系统中就一

24、定有相应的机制来处理它,确保不会产生死机、死循环或其他对操作系统的损害,从而保证了整个程序运行的安全性。9.系统定义的异常与用户自定义的异常有何不同?如何使用这两类异常?答:系统定义的特定情况出现的问题,而此时用来对可能遇到的问题进行处理。用户定义的是自己觉得可能会出现问题时,需要处理的。这样避免程序中断或是出现未知错误。系统异常有两种一种是运行时异常,一种是普通异常,普通异常要求用户捕获或者抛出的,不补货或者抛出就会编译不通过。运行时异常编译可以通过,但是运行时才显露出来。10.用户如何自定义异常?编程实现一个用户自定义异常。定义mytestimportjava.io.*;publiccla

25、ssmytestprivatestaticintquotient(intnumber,intdenominator)throwsDivideByZeroExceptionif(denominator=0)thrownewDivideByZeroException();return(number/denominator);publicstaticvoidmain(Stringargs)intnumber1=0,number2=0,result=0;trySystem.out.println(输入第一个数字:“);number1=Integer.valueOf(Keyboard.getString

26、().intValue();System.out.println(输入第二个数字:“);number2=Integer.valueOf(Keyboard.getString().intValue();result=quotient(number1,number2);catch(NumberFormatExceptione)System.out.println(e.toString();System.exit(-1);System.out.println(number1+/+number2+=+result);System.out.println(number1+/+number2+=+resu

27、lt);System.out.println(number1+/+number2+=+result);System.out.println(number1+/+number2+=+result);定义DivideByZeroExceptionpublicclassDivideByZeroExceptionextendsArithmeticExceptionpublicDivideByZeroException()super(除数不能为0!);定义Keyboardimportjava.io.*;publicclassKeyboardstaticBufferedReaderinputStream=

28、newBufferedReader(newInputStreamReader(System.in);publicstaticintgetInteger()tryreturn(Integer.valueOf(inputStream.readLine().trim().intValue();catch(Exceptione)e.printStackTrace();return0;publicstaticStringgetString()tryreturn(inputStream.readLineO);catch(IOExceptione)return0;Xjauajauanytest输人第一个数字

29、:输人笫二个数字;0Exceptioninthrea.dmain*DiuideByEeroException=除数不育豈为回号atnytet-(juotientCnyteEt.jaua:6atnytest-mainiaua第四章课后习题答案1子类将继承父类所有的属性和方法吗?为什么?答:不,子类不能直接访问从父类中继承的私有属性及方法,但可以对公有及保护方法进行访问。2.方法的覆盖与方法的重载有何不同?答:覆盖是运用在子类中实现与父类相同的功能,但采用不同的算法或公式;在名字相同的方法中,要做比父类更多的事情;在子类中需要取消从父类继承的方法。3声明两个带有无参构造方法的两个类A和B,声明A的

30、子类C,并且声明B为C的一个成员,不声明C的构造方法。编写测试代码,生成类C的实例对象,并观察结果。/A类publicclassApublicA()System.out.println(输出A类“);/B类publicclassBpublicB()System.out.println(输出B类);/C类publicclassCextendsABb=newB();/测试类publicclasstest4_3publicstaticvoidmain(Stringargs)Cc=newC();运行结果:,ProbIemsavadocteirminatedte-&t4_3Java输出A类输出万类4声明

31、一个基类A,它只有一种非默认构造方法;声明A的子类B,B具有默认方法及非默认方法,并在B的构造方法中调用基类A的构造方法。/A类publicclassApublicA(Stringlin)System.ou七.println(A类的非默认构造方法+lin);/B类publicclassBextendsApublicB()super(Fuckyourteacher);System.ou七.println(B默认类构造方法);publicB(Stringlin)super(lin);System.ou七.println(B类非构造方法);测试类publicclasstest4_4publicsta

32、ticvoidmain(Stringargs)newB();System.ou七.println();newB(Fuckmyteacher);运行结果:Cor.ProtlemsTJavadoc凰DeclarationCortest4_4JavaApplicationD:Progrsi負类的非默认构凿方法FmJeyorteacherE默认类枸苣方法血类的非藍认构苣方法血类的非藍认构苣方法E类非构直方法Fack:m#teacrier5声明一个类,它具有一种方法,此方法被重载三次,派生一个新类,并增加一种新的重载方法,编写测试类验证四种方法对于派生类验证四种方法对于派生类都有效。/A类publicc

33、lassApublicvoidshowTime()System.out.println(空重载“);publicvoidshowTime(intl)System.out.println(整形参数重载);publicvoidshowTime(charl)System.out.println(字符参数重载);B类publicclassBextendsApublicvoidshowTime(Stringl)System.out.println(字符串参数重载);/测试类publicclasstest4_5publicstaticvoidmain(Stringargs)Bb=newB();b.show

34、Time();b.showTime(5);b.showTime(f);b.showTime(林楚金);,ProLlernsavad&c鹰terminatedteet4_5JavaAf空重载整砒卷数重载宇紆参埶重载字符串蜃數重载6声明一个具有final方法的类,声明一个派生类,并试图对这个方法进行重写,会有什么结果。/A类publicclassApublicfinalvoidshowTime()System.out.println(类A中方法“);/B类publicclassBextendsApublicvoidshowTime()System.out.println(类B中方法“);测试类pu

35、blicclasstest4_6publicstaticvoidmain(Stringargs)Bb=newB();b.showTime();运行结果:_FrablemsJavadoc耳Dedaon|日Cnnsole割-:te3TTnirfltedttst4_6JavaAppliizrticnDPnograml-ilcs,,|MyEc(pii亡咼沖问旳莎”心亡(Apr12,2D11L19WAMiKcepcicciintbread血比*java.Isrr.Veiifrror:classBaverridEfinalnEtltodC.Zatatatatatmtatat5tae.uLazigaClas

36、Lsad.er.dEfizsCIassl渕衣讥宅Ujeihod?己起LangClassLadeidfifUieClassIDnlcicwSource)avasecuity.SecrjzeClaBsLMder.defuieClassIDnlonraSoltk)atbunet.ORlCLassLcaderdefineClasE(IMcicwnSource|芒起.netriRlCLB-Sslcader.accesaSLQD|UiUciownsource|和足atatatatatmtatat5ta.ffssJxity.ADijeaaCoDcrDLler.doPrivileged让la二1担片匕訂丈笳足

37、.netriFELClasslaader.njuicia331血mownSDirce)aTELamj.ClaLMderloadHaaaIUnkRcmaourceisuneLs百Launcher$ppClaE?LaaderLDila3sIUrIhimziSouide)dfriLang.CLassLMder.iDa-illasa|OnkRsmaource)atjaTri.Lamj.ClasgLMder.iDadlaaaZDtEniaJ(QDinzmSaircej(说白了就是B中showTime()的无法覆盖A中showTime(),被覆盖为final,不能覆盖。)7声明一个final类,并试图声明

38、其派生类,会有什么结果。/A类publicfinalclassA/B类publicclassBextendsA/测试类publicclasstest4_7publicstaticvoidmain(Stringargs)Bb=newB();publicclassStudentpublicclassStudentpublicclassStudentpublicclassStudent运行结果:BkProblems鼐gn/aiclo圖Dedsamaticn曰Console3test4_7JavaApplicaticnD:ProgramFilesMyEclipse6.0jrebinjavaw.exe(

39、Apr12,20111:24:11AM)Exceptioninthread町ndii11jcza丄HLiigEi:37aj7:Ubleix:Ttiet-TpeBcannotsutclassthefinalclassA且匸E(B.iava:2)attest47mainttesc7iav且:4I(说白了就是无法从A中进行继承)8什么是抽象类?抽象类中是否一定要包括抽象方法?答:抽象类是一个不完全的类,不能使用new方法进行实例化。抽象类可以包含抽象方法,也可以不包含抽象方法,但有抽象方法的必须是抽象类。9.this和super分别有哪些特殊含义?都有哪些种用法?答:this表示当前类;super表

40、示调用父类。在定义类的时候用到,this是当前对象的引用,super是当前对象的父类对象的引用,一般的都是把super用在构造函数中。10完成下面父类及子类的声明:声明Student类属性包括学号、姓名、英语成绩、数学成绩、计算机成绩和总成绩。方法包括构造方法、get方法、set方法、toString方法、equals方法、compare方法(比较两个学生的总成绩,结果分为大于、小于、等于),sum方法(计算总成绩)和testScore方法(计算评测成绩)。注:评测成绩可以取三门课成绩的平均分,另外任何一门课的成绩的改变都需要对总成绩进行重新计算,因此,在每一个set方法中应调用sum方法计算

41、总成绩。Stringid;Stringname;floatscoreOfenglish;floatscoreOfmath;floatscoreOfcomputer;floatscoreOfsum;/构造方法publicStudent()ascoreOfmath,floatascoreOfmath,floatpublicStudent(Stringaid,Stringaname,floatascoreOfenglish,floatascoreOfcomputer)this.id=aid;=aname;this.scoreOfenglish=ascoreOfenglish;this.scoreOf

42、math=ascoreOfmath;this.scoreOfcomputer=ascoreOfcomputer;/this.scoreOfsum=ascoreOfenglish+ascoreOfmath+ascoreOfcomputer;this.scoreOfsum=sum();/sum方法publicfloatsum()return(this.scoreOfenglish+this.scoreOfmath+this.scoreOfcomputer);/testScore测评成绩/平均分publicfloattestScore()return(this.scoreOfsum/3);6个get

43、方法publicStringgetid()return(id);publicStringgetname()return(name);publicfloatgetscoreOfenglish()return(scoreOfenglish);publicfloatgetscoreOfmath()return(scoreOfmath);publicfloatgetscoreOfcomputer()return(scoreOfcomputer);publicfloatgetscoreOfsum()return(scoreOfsum);5个set方法publicvoidsetid(Stringnewid

44、)publicvoidcompare(Studentx)publicvoidcompare(Studentx)this.id=newid;publicvoidsetname(Stringnewname)=newname;publicvoidsetscoreOfenglish(floatnewscoreOfenglish)this.scoreOfenglish=newscoreOfenglish;this.scoreOfsum=sum();publicvoidsetscoreOfmath(floatnewscoreOfmath)this.scoreOfmath=newscoreOfmath;th

45、is.scoreOfsum=sum();publicvoidsetscoreOfcomputer(floatnewscoreOfcomputer)this.scoreOfcomputer=newscoreOfcomputer;this.scoreOfsum=sum();/toString方法publicStringtoString()return(“学号:+this.id+姓名:+name+n英语:+this.scoreOfenglish+n数学:+this.scoreOfmath+n计算机:+this.scoreOfcomputer+n总分:+this.scoreOfsum);/compar

46、e方法/比较2学生总分if(this.getscoreOfsum()x.getscoreOfsum()System.out.println(this.getname()+总分大于+x.getname();if(this.getscoreOfsum()x.getscoreOfsum()System.out.println(this.getname()+总分小于+x.getname();elseSystem.out.println(this.getname()+总分等于+x.getname();/equals方法/比较2学生学号是否相等(还没完善)/*publicbooleanequals(Obj

47、ectx)if(this.getClass()!=x.getClass()returnfalse;Studentb=(Student)x;if(this.id=b.getid()returntrue;*/(2)声明StudentXW(学习委员)类为Student类的子类。在StudentXW类中增加责任属性,并重写testScore方法(评测成绩二三门课平均分+3)publicclassStudentXWextendsStudentStringresponsibility;/构造方法publicStudentXW()super();/responsibility=;publicvoidcomp

48、are(Studentx)publicvoidcompare(Studentx)publicStudentXW(Stringaid,Stringaname,floatascoreOfenglish,floatascoreOfmath,floatascoreOfcomputer,Stringaresponsibility)super(aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer);responsibility=aresponsibility;/testScore测评成绩/平均分publicfloattestScore()retur

49、n(this.scoreOfsum/3+3);/toString方法publicStringtoString()return(“学号:+this.id+姓名:+name+n英语:+this.scoreOfenglish+n数学:+this.scoreOfmath+n计算机:+this.scoreOfcomputer+n总分:+this.scoreOfsum+n职位:+this.responsibility);(3)声明StudentBZ类为Student类的子类在StudentBZ类中增加责任属性,并重写testScore方法(评测成绩=三门课平均分+5)publicclassStudentB

50、ZextendsStudentStringresponsibility;/构造方法publicStudentBZ()super();/responsibility=;publicStudentBZ(Stringaid,Stringaname,floatascoreOfenglish,floatascoreOfmath,floatascoreOfcomputer,Stringaresponsibility)super(aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer);responsibility=aresponsibility;/t

51、estScore测评成绩/平均分publicfloattestScore()return(this.scoreOfsum/3+5);/toString方法publicStringtoString()return(“学号:+this.id+姓名:+name+n英语:+this.scoreOfenglish+n数学:+this.scoreOfmath+n计算机:+this.scoreOfcomputer+n总分:+this.scoreOfsum+n职位:+this.responsibility);声明测试类,生成若干个Student类、StudentXW类及StudentBZ类对象,并分别计算它们

52、的评测成绩(建议采用:写一个测试函数,该函数以父类student数组作为参数)。importjava.text.*;publicclasstest4_10publicstaticvoidmain(Stringargs)Studentsu=newStudent(001,苏轼,56.00f,87.00f,95.00f);Studentdu二newStudent(002,杜甫,86.00f,75.00f,80.00f);Studentbai二newStudent(003,白居易,42.00f,77.00f,65.00f);Studentliu二newStudent(004,柳宗元,67.00f,67

53、.00f,67.00f);StudentXWou二newStudentXW(005,欧阳修,89.00f,98.00f,90.00f,数学代表);StudentXWwang二newStudentXW(006,王安石,98.00f,87.00f,36.00f,英语代表“);StudentBZli=newStudentBZ(007,李白,89.00f,87.00f,87.00f,班长“);System.out.print(li);System.out.println(n评测成绩:+newDecimalFormat(O.OO).format(li.testScore();System.out.pri

54、ntln();System.out.print(wang);System.out.println(n评测成绩:+newDecimalFormat(0.00).format(wang.testScore();System.out.println();System.out.print(ou);System.out.println(n评测成绩:+newDecimalFormat(0.00).format(ou.testScore();System.out.println();System.out.print(su);System.out.println(n评测成绩:+newDecimalFormat

55、(0.00).format(su.testScore();System.out.println();System.out.print(du);System.out.println(n评测成绩:+newDecimalFormat(0.00).format(du.testScore();System.out.println();System.out.print(bai);System.out.println(n评测成绩:+newDecimalFormat(0.00).format(bai.testScore();System.out.println();System.out.print(liu);

56、System.out.println(Hn评测成绩:+newDecimalFormat(H0.00H).format(liu.testScore();运行test4_10的结果如下:ProblemsProblemsJavadoc風Decpublicvoidcompare(Studentx)publicvoidcompare(Studentx)test4_110JavaAppliL;白00李:L;白00李:335:歐阳幅:汕.0:匸0机;30.0:277.0:數学代夷:92.7号名语学算分位学姓英数计总职publicvoidcompare(Studentx)publicvoidcompare(S

57、tudentx)评無成绩:95.3311轼D:苗5:2鏡机:咸号容语学M分测学姓英埶计总评publicvoidcompare(Studentx)publicvoidcompare(Studentx)publicvoidcompare(Studentx)publicvoidcompare(Studentx)机:成号客语学算分测学姓英数计总评机;成邑名语学算分剃学姓英数计总评机机:成号客语学算分测学姓英数计总评机;成邑名语学算分剃学姓英数计总评机成号名语学算片则学姓英数计总评002杜甫56.075.0:SO.0E岂1050.33003白居易42.0中0;町5口13.0绩:61.33004柳示TH6

58、7067.0:7.0201.0常:67.0-3(很好玩吧,李白,我让你挂科。11包有什么作用?如何创建包和引用包中的类?答:包是一种松散的类的组合,一般不要求处于同一包中的类型有明确的相互关系,但由于同一包中的类在默认情况下可以相互访问,所以为了方便编程和管理,通常把需要在一起工作的类放在一个包里。利用包来管理类,可实现类的共享与复用。在操作系统中,目录用来组织文件,设置权限。只要在要用到包中类的时候,在该引用类的第一行加上:package(包的全路径)即可。第五章课后习题答案1什么是接口?接口起什么作用?接口与抽象类有何区别?答:Java中的接口是一系列方法的声明,是一些方法特征的集合,一个

59、接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。作用:接口是面向对象的一个重要机制,使用接口可以实现多态继承;接口中的所有方法都是抽象的,这些抽象方法由实现这一接口的不同类型来具体;接口还可以用来实现不同类之间的常量共享。与抽象类不同的是:接口允许在看起来不相干的类之间定义共同行为。2试编程证明接口中的属性都隐含为static及final,所有的方法都为public。/定义接口Shape2DinterfaceShape2DdoublePi=3.14;doublearea();/Circle类继承接口Shape2Dpublicc

60、lassCircleimplementsShape2Ddoubleradius;publicCircle(doubler)radius=r;publicdoublearea()returnPi*radius*radius;/A类(测试接口中隐含final的area()方法)publicclassAextendsShape2Dpublicdoublearea();/test5_2publicclasstest5_2publicstaticvoidmain(Stringargs)Circlec=newCircle(10);System.out.println(Pi=3.14圆的面积:+c.area

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论