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

下载本文档

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

文档简介

第6章课后习题参考答案

1.什么是继承?

答:在已有类的基础上再定义新类,则新类可以拥有已有类中的所有属性和行为。这样定义类的

方式称为继承或派生。

2.什么是域的隐藏和方法的重写?

答:子类中定义的域的名字与继承自父类的域的名字相同,则在子类中隐藏了继承自父类的域,

子类中的方法不能直接用域名访问到父类中的被隐藏的域。

子类对象与父类对象是同一类对象,但子类对象不完全与父类对象相同,子类有自己的特殊

性,所以,当子类继承父类的方法后,子类根据自身的需要可以对继承的方法重新定义,以便使

子类对象表现出与父类不同的行为。这种重新定义的过程称为方法的重写(Override)。

3.this和super有什么作用?

答:

this是对象名,是对象的别名,又称对象的引用。this的作用范围在方法中。当通过一个对

象调用一个方法时,运行时系统会将当前对象的引用传递到方法中,在方法中就可以通过this

访问这个对象。

super表示当前类的直接父类。父类中的域可能被子类隐藏,父类中的方法可能被子类重写。

如果父类中的域被隐藏或方法被重写,则在子类中就访问不到这样的父类成员了。但是,在有些

情况下,还想访问被隐藏的域或被重写的方法,这种情况下则可以通过关键字super实现相应的

访问。

4.什么是多态性?如何实现多态性?

答:同一类对象表现出的不同行为称为多态。多态的实现一定得在有继承关系的对象中。例如,

有一个类Base,它派生出多个子类,子类下面还派生子类,这些子类的对象都可以称为B类的

对象(赋值兼容规则),但是,每一个子类的对象的行为都与其他子类对象或Base类对象的行为

不同,这种行为上的不同称为多态性。

5.在一个学校中有教师和学生两类人员。学生信息有身份证号、学号、专业、姓名、性别、年

龄及数学、英语、Java程序设计三门课程的成绩。教师信息有身份证号、教师号、专业、姓名、

性别、年龄及授课的学时数。创建学生和教师的对象并输出对象的信息。

答:

importjava.util.*;

publicclassexercise06_05

{

publicstaticvoidmain(String[]args)

intid;

Stringcode;

Stringprofession;

Stringname;

Stringsex;

intage;

intmath;

intenglish;

intjava;

Scannerreader=newScanner(System.in);

id=reader.nextlnt();

code=reader.next();

profession=reader.next();

name=reader.next();

sex=rcader.next();

age=reader.nextlnt();

math=reader.nextlnt();

english=reader.nextlnt();

java=reader.ncxtlnt();

Studentstu=newStudent(id,code,profession,name,sex,age,math,english,java);

stu.output();

inttimes;

id=reader.nextlnt();

code=reader.next();

profession=reader.next();

name=reader.next();

sex=reader.next();

age=reader.nextlnt();

times=reader.nextlnt();

Teacherteacher=newTeacher(id,code,profession,name,sex,age,times);

teacher.output();

}

}

classStudent

(

intid;

Stringcode;

Stringprofession;

Stringname;

Stringsex;

intage;

intmath;

intenglish;

intjava;

publicStudent(){}

publicStudent(intid,Stringcode,Stringprofession,Stringname,Stringsex,intage,intmath,int

english,intjava)

this.id=id;

this.code=code;

fession=profession;

=name;

this.sex=sex;

this.age=age;

this.math=math;

this.english=english;

this.java=java;

)

publicvoidoutput()

{

System.out.println(Hid-'+id);

Systcm.out.println(ncode-'4-code);

System.out.println(,,profession=,,+profession);

System.out.println(,,name=,,+name);

System.out.println(,,sex="+sex);

System.out.println(Mage=n+age);

System.out.println(,,math-,+math);

System.out.println(,,english=,,+english);

System.out.println(njava=,,-^ava);

}

classTeacher

(

intid;

Stringcode;

Stringprofession;

Stringname;

Stringsex;

intage;

inttimes;

publicTeacher(){}

publicTeacher(intid,Stringcode,Stringprofession,Stringname,Stringsex,intage,inttimes)

(

this.id=id;

this.code=code;

fession=profession;

=name;

this.sex=sex;

this.age=age;

this.times=times;

publicvoidoutput()

{

System.out.println(nid=,'+id);

System.out.printl^^code-'+code);

System.out.println(nprofession=n+profession);

System.out.println(nname=n+name);

System.out.println(,,sex=,,+sex);

System.out.println(nage=n+age);

System.out.println(,,times=',+times);

6.有若干个直柱体(底面与柱面垂直),其底面可能是圆形、矩形或三角形。已知柱体的高度、

圆的半径、矩形的宽度和高度及三角形的三边长(一定能构成三角形),计算柱体的体积和表面

积(包括两个底的面积)。

答:

importjava.util.*;

publicclassexercise06_06

(

publicstaticvoidmain(String[]args)

(

Scannerreader=newScanner(System.in);

doubletl,t2,t3,h;

Shapesh=null;

Triangletr;

Rectanglere;

Circleci;

inttype;//l=Circle;2=Rectangle;3=Triangle

type=reader.nextlnt();

if(type==l)

(

11=reader.nextDouble();

ci=newCircle(tl);

sh=ci;

}

elseif(type==2)

(

tl=reader.nextDouble();

t2=reader.nextDouble();

re=newRectangle(tl,t2);

sh=re;

elseifi(type==3)

tl=reader.nextDouble();

t2=reader.nextDouble();

t3=rcader.nextDouble();

tr=newTriangle(tl,t2,t3);

sh=tr;

)

h=reader.nextDouble();

StraightCylindersc=newStraight_Cylinder(sh,h);

sc.output();

}

}

abstractclassShape

(

publicabstractdoublegctPerimeter();

publicabstractdoublegetArea();

}

classCircleextendsShape

(

doubler;

publicCircle(){}

publicCircle(doubler)

{

this.r=r;

}

publicdoublegetPerimeter()

(

return2*Math.PI*r;

}

publicdoublegetArea()

(

returnMath.PI*r*r;

}

}

classRectangleextendsShape

{

doublel,w;

publicRectangle(){}

publicRectangle(double1,doublew)

{

this.M;

this.w=w;

publicdoublegetPerimeter()

{

return2*(l+w);

}

publicdoublegetArea()

{

returnl*w;

classTriangleextendsShape

(

doublea,b,c;

publicTriangle(){}

publicTriangle(doublea,doubleb,doublec)

{

this.a=a;

this.b=b;

this.c=c;

}

publicdoublegetPerimeter()

{

returna+b+c;

}

publicdoublegetArea()

(

doubles=(a+b+c)/2;

returnMath.sqrt(s*(s-a)*(s-b)*(s-c));

}

)

classStraight_Cylinder

(

Shapebottom;

doubleheight;

publicStraight_Cylindcr(){}

publicStraight_Cylinder(Shapes,doubleh)

{

bottom=s;

height=h;

}

publicdoublegetSurfacearea()

return2*bottom.getArea()+bottom.getPerimeter()*height;

publicdoublegetVblume()

{

returnbottom.getArea()*height;

}

publicvoidoutput()

(

System.out.println(,,Vblume=,,+getVdlume()-i-nSurfaccarca=*,+getSurfacearea());

7.某学校教师的工资=基本工资+课时补贴。教授的基本工资为5000元,每学时补贴70元;副

教授的基本工资为3500元,每学时补贴60元;讲师的基本工资2600元,每学时补贴55元。已

知每个教师的学时数,计算每个教师的每月工资数。

答:

importjava.util.*;

classTeacher

(

doublebaseSalary;

doublesubsidy;

intpHours;

publicTeacher(doublebs,doublesb,inth)

{

baseSalary=bs;

subsidy=sb;

pHours=h;

}

publicvoidoutput()

(

System.out.println(baseSalary+subsidy*pHours);

}

}

classProfessorextendsTeacher

(

publicProfessor(inth)

{

supcr(5000,70,h);

}

)

classviceProfessorextendsTeacher

publicviceProfessor(inth)

super(3500,60,h);

)

classlecturerextendsTeacher

(

publiclecturer(inth)

(

super(2600,55,h);

}

}

publicclassexercise06_07

(

publicstaticvoidmain(String[]args)

(

Scannerreader=newScanner(System.in);

inttype,hs;

type=reader.nextlnt();

hs=reader.nextlnt();

Teacherteacher=null;

if(type==l)

(

teacher=newProfessor(hs);

)

elseif(type==2)

(

teacher=newviceProfessor(hs);

}

elseiRtype==3)

(

teacher=newlecturer(hs);

}

teacher.output();

8.某家庭有电视机、洗衣机、电冰箱和微波炉。编程序显示家用电器的工作状态:电视机在播

放节目,洗衣机在洗衣服,电冰箱在制冷及微波炉在加热食物。

答:

importjava.util.*;

abstractclassElectricAppliance

publicElectricApplianceQ

publicabstractvoidworking();

classTVextendsElectricAppliance

{

publicTV()

(

}

publicvoidworking()

{

System.out.println("电视机正在播放节目");

}

}

classWashingMachineextendsElectricAppliance

{

publicWashingMachine()

{

}

publicvoidworking()

温馨提示

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

最新文档

评论

0/150

提交评论