Java语言程序设计郑莉第四章课后习题答案Word文档下载推荐.docx
《Java语言程序设计郑莉第四章课后习题答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计郑莉第四章课后习题答案Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
publicclassCextendsA{
Bb=newB();
//测试类
publicclasstest4_3{
publicstaticvoidmain(Stringargs[]){
Cc=newC();
运行结果:
4.声明一个基类A,它只有一种非默认构造方法;
声明A的子类B,B具有默认方法及非默认方法,并在B的构造方法中调用基类A的构造方法。
publicA(Stringlin){
System.out.println("
A类的非默认构造方法"
+lin);
}//B类
publicclassBextendsA{
super("
Fuckyourteacher"
B默认类构造方法"
publicB(Stringlin){
super(lin);
B类非构造方法"
}//测试类
publicclasstest4_4{
newB();
System.out.println();
newB("
Fuckmyteacher"
5.声明一个类,它具有一种方法,此方法被重载三次,派生一个新类,并增加一种新的重载方法,编写测试类验证四种方法对于派生类验证四种方法对于派生类都有效。
publicvoidshowTime(){
空重载"
publicvoidshowTime(intl){
整形参数重载"
publicvoidshowTime(charl){
字符参数重载"
publicclassBextendsA{
publicvoidshowTime(Stringl){
字符串参数重载"
publicclasstest4_5{
Bb=newB();
b.showTime();
b.showTime(5);
b.showTime('
f'
b.showTime("
林楚金"
6.声明一个具有final方法的类,声明一个派生类,并试图对这个方法进行重写,会有什么结果。
publicfinalvoidshowTime(){
类A中方法"
}
publicvoidshowTime(){
类B中方法"
publicclasstest4_6{
(说白了就是B中showTime()的无法覆盖A中showTime(),被覆盖为final,不能覆盖。
)
7.声明一个final类,并试图声明其派生类,会有什么结果。
publicfinalclassA{
publicclasstest4_7{
(说白了就是无法从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;
this.name=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){
this.name=newname;
publicvoidsetscoreOfenglish(floatnewscoreOfenglish){
this.scoreOfenglish=newscoreOfenglish;
publicvoidsetscoreOfmath(floatnewscoreOfmath){
this.scoreOfmath=newscoreOfmath;
publicvoidsetscoreOfcomputer(floatnewscoreOfcomputer){
this.scoreOfcomputer=newscoreOfcomputer;
//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()<
总分小于"
elseSystem.out.println(this.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方法(评测成绩=三门课平均分+3)
publicclassStudentXWextendsStudent{
Stringresponsibility;
publicStudentXW(){
super();
//responsibility="
"
;
publicStudentXW(Stringaid,Stringaname,floatascoreOfenglish,floatascoreOfmath,floatascoreOfcomputer,Stringaresponsibility){
super(aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer);
responsibility=aresponsibility;
return(this.scoreOfsum/3+3);
+this.scoreOfsum+"
\n职位:
+this.responsibility);
(3)声明StudentBZ类为Student类的子类
在StudentBZ类中增加责任属性,并重写testScore方法(评测成绩=三门课平均分+5)
publicclassStudentBZextendsStudent{
publicStudentBZ(){
publicStudentBZ(Stringaid,Stringaname,floatascoreOfenglish,floatascoreOfmath,floatascoreOfcomputer,Stringaresponsibility){
return(this.scoreOfsum/3+5);
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);
).format(wang.testScore()));
System.out.print(ou);
).format(ou.testScore()));
System.out.print(su);
).format(su.testScore()));
System.out.print(du);
).format(du.testScore()));
System.out.print(bai);
).format(bai.testScore()));
System.out.print(liu);
).format(liu.testScore()));
运行test4_10的结果如下:
(很好玩吧,李白,我让你挂科。
11.包有什么作用?
如何创建包和引用包中的类?
包是一种松散的类的组合,一般不要求处于同一包中的类型有明确的相互关系,但由于同一包中的类在默认情况下可以相互访问,所以为了方便编程和管理,通常把需要在一起工作的类放在一个包里。
利用包来管理类,可实现类的共享与复用。
在操作系统中,目录用来组织文件,设置权限。
只要在要用到包中类的时候,在该引用类的第一行加上:
package(包的全路径)即可。