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

下载本文档

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

文档简介

..Java语言程序设计第四章课后习题答案1.子类将继承父类所有的属性和方法吗?为什么?答:不,子类不能直接访问从父类中继承的私有属性及方法,但可以对公有及保护方法进行访问。2.方法的覆盖与方法的重载有何不同?答:覆盖是运用在子类中实现与父类相同的功能,但采用不同的算法或公式;在名字相同的方法中,要做比父类更多的事情;在子类中需要取消从父类继承的方法。3.声明两个带有无参构造方法的两个类A和B,声明A的子类C,并且声明B为C的一个成员,不声明C的构造方法。编写测试代码,生成类C的实例对象,并观察结果。//A类publicclassA{ publicA<>{ System.out.println<"输出A类">; }}//B类publicclassB{ publicB<>{ System.out.println<"输出B类">; }}//C类publicclassCextendsA{ Bb=newB<>;}//测试类publicclasstest4_3{ publicstaticvoidmain<Stringargs[]>{ Cc=newC<>; }}运行结果:4.声明一个基类A,它只有一种非默认构造方法;声明A的子类B,B具有默认方法及非默认方法,并在B的构造方法中调用基类A的构造方法。//A类publicclassA{publicA<Stringlin>{ System.out.println<"A类的非默认构造方法"+lin>; }}//B类publicclassBextendsA{publicB<>{super<"Fuckyourteacher">; System.out.println<"B默认类构造方法">; }publicB<Stringlin>{super<lin>; System.out.println<"B类非构造方法">; }}//测试类publicclasstest4_4{publicstaticvoidmain<Stringargs[]>{newB<>; System.out.println<>;newB<"Fuckmyteacher">; }}运行结果:5.声明一个类,它具有一种方法,此方法被重载三次,派生一个新类,并增加一种新的重载方法,编写测试类验证四种方法对于派生类验证四种方法对于派生类都有效。//A类publicclassA{ publicvoidshowTime<>{ System.out.println<"空重载">; } publicvoidshowTime<intl>{ System.out.println<"整形参数重载">; } publicvoidshowTime<charl>{ System.out.println<"字符参数重载">; }}//B类publicclassBextendsA{ publicvoidshowTime<Stringl>{ System.out.println<"字符串参数重载">; }}//测试类publicclasstest4_5{publicstaticvoidmain<Stringargs[]>{ Bb=newB<>; b.showTime<>; b.showTime<5>; b.showTime<'f'>; b.showTime<"林楚金">; }}6.声明一个具有final方法的类,声明一个派生类,并试图对这个方法进行重写,会有什么结果。//A类publicclassA{ publicfinalvoidshowTime<>{ System.out.println<"类A中方法">; }}//B类publicclassBextendsA{ publicvoidshowTime<>{ System.out.println<"类B中方法">; }}//测试类publicclasstest4_6{ publicstaticvoidmain<Stringargs[]>{ Bb=newB<>; b.showTime<>; }}运行结果:〔说白了就是B中showTime<>的无法覆盖A中showTime<>,被覆盖为final,不能覆盖。7.声明一个final类,并试图声明其派生类,会有什么结果。//A类publicfinalclassA{}//B类publicclassBextendsA{}//测试类publicclasstest4_7{ publicstaticvoidmain<Stringargs[]>{ Bb=newB<>; }}运行结果:〔说白了就是无法从A中进行继承8.什么是抽象类?抽象类中是否一定要包括抽象方法?答:抽象类是一个不完全的类,不能使用new方法进行实例化。抽象类可以包含抽象方法,也可以不包含抽象方法,但有抽象方法的必须是抽象类。9.this和super分别有哪些特殊含义?都有哪些种用法?答:this表示当前类;super表示调用父类。在定义类的时候用到,this是当前对象的引用,super是当前对象的父类对象的引用,一般的都是把super用在构造函数中。10.完成下面父类及子类的声明:<1>声明Student类属性包括学号、姓名、英语成绩、数学成绩、计算机成绩和总成绩。方法包括构造方法、get方法、set方法、toString方法、equals方法、compare方法〔比较两个学生的总成绩,结果分为大于、小于、等于,sum方法〔计算总成绩和testScore方法〔计算评测成绩。注:评测成绩可以取三门课成绩的平均分,另外任何一门课的成绩的改变都需要对总成绩进行重新计算,因此,在每一个set方法中应调用sum方法计算总成绩。publicclassStudent{Stringid;Stringname;floatscoreOfenglish;floatscoreOfmath;floatscoreOfcomputer;floatscoreOfsum;//构造方法publicStudent<>{}publicStudent<Stringaid,Stringaname,floatascoreOfenglish,floatascoreOfmath,floatascoreOfcomputer>{this.id=aid;=aname;this.scoreOfenglish=ascoreOfenglish;this.scoreOfmath=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方法publicStringgetid<>{return<id>;}publicStringgetname<>{return<name>;}publicfloatgetscoreOfenglish<>{return<scoreOfenglish>;}publicfloatgetscoreOfmath<>{return<scoreOfmath>;}publicfloatgetscoreOfcomputer<>{return<scoreOfcomputer>;}publicfloatgetscoreOfsum<>{return<scoreOfsum>;}//5个set方法publicvoidsetid<Stringnewid>{this.id=newid;}publicvoidsetname<Stringnewname>{=newname;}publicvoidsetscoreOfenglish<floatnewscoreOfenglish>{this.scoreOfenglish=newscoreOfenglish;this.scoreOfsum=sum<>;}publicvoidsetscoreOfmath<floatnewscoreOfmath>{this.scoreOfmath=newscoreOfmath;this.scoreOfsum=sum<>;}publicvoidsetscoreOfcomputer<floatnewscoreOfcomputer>{this.scoreOfcomputer=newscoreOfcomputer;this.scoreOfsum=sum<>;}//toString方法publicStringtoString<>{return<"学号:"+this.id+"\n姓名:"+name+"\n英语:"+this.scoreOfenglish+"\n数学:"+this.scoreOfmath+"\n计算机:"+this.scoreOfcomputer+"\n总分:"+this.scoreOfsum>;}//compare方法/比较2学生总分publicvoidcompare<Studentx>{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<Objectx>{if<this.getClass<>!=x.getClass<>>returnfalse;Studentb=<Student>x;if<this.id==b.getid<>>returntrue;}*/}<2声明StudentXW<学习委员>类为Student类的子类。在StudentXW类中增加责任属性,并重写testScore方法〔评测成绩=三门课平均分+3publicclassStudentXWextendsStudent{Stringresponsibility;//构造方法publicStudentXW<>{super<>;//responsibility="";}publicStudentXW<Stringaid,Stringaname,floatascoreOfenglish,floatascoreOfmath,floatascoreOfcomputer,Stringaresponsibility>{super<aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer>;responsibility=aresponsibility;}//testScore测评成绩/平均分publicfloattestScore<>{return<this.scoreOfsum/3+3>;}//toString方法publicStringtoString<>{return<"学号:"+this.id+"\n姓名:"+name+"\n英语:"+this.scoreOfenglish+"\n数学:"+this.scoreOfmath+"\n计算机:"+this.scoreOfcomputer+"\n总分:"+this.scoreOfsum+"\n职位:"+this.responsibility>;}}<3声明StudentBZ类为Student类的子类在StudentBZ类中增加责任属性,并重写testScore方法〔评测成绩=三门课平均分+5publicclassStudentBZextendsStudent{Stringresponsibility;//构造方法publicStudentBZ<>{super<>;//responsibility="";}publicStudentBZ<Stringaid,Stringaname,floatascoreOfenglish,floatascoreOfmath,floatascoreOfcomputer,Stringaresponsibility>{super<aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer>;responsibility=aresponsibility;}//testScore测评成绩/平均分publicfloattestScore<>{return<this.scoreOfsum/3+5>;}//toString方法publicStringtoString<>{return<"学号:"+this.id+"\n姓名:"+name+"\n英语:"+this.scoreOfenglish+"\n数学:"+this.scoreOfmath+"\n计算机:"+this.scoreOfcomputer+"\n总分:"+this.scoreOfsum+"\n职位:"+this.responsibility>;}}4声明测试类,生成若干个Student类、StudentXW类及StudentBZ类对象,并分别计算它们的评测成绩<建议采用:写一个测试函数,该函数以父类student数组作为参数>。importjava.text.*;publicclasstest4_10{publicstaticvoidmain<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.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<"0.00">.format<li.testScore<>>>; System.out.println<>; 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评测成绩:"+newDecimalForm

温馨提示

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

评论

0/150

提交评论