《Java程序设计教程(第2版)课后习题及答案06课后习题.docx》由会员分享,可在线阅读,更多相关《Java程序设计教程(第2版)课后习题及答案06课后习题.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第6章课后习题参考答案1 .什么是继承?答:在已有类的基础上再定义新类,则新类可以拥有已有类中的所有属性和行为。这样定义类的 方式称为继承或派生。2 .什么是域的隐藏和方法的重写?答:子类中定义的域的名字与继承自父类的域的名字相同,则在子类中隐藏了继承自父类的域, 子类中的方法不能直接用域名访问到父类中的被隐藏的域。子类对象与父类对象是同一类对象,但子类对象不完全与父类对象相同,子类有自己的特殊 性,所以,当子类继承父类的方法后,子类根据自身的需要可以对继承的方法重新定义,以便使 子类对象表现出与父类不同的行为。这种重新定义的过程称为方法的重写(Override)。3 . this和super
2、有什么作用?答:this是对象名,是对象的别名,又称对象的引用。this的作用范围在方法中。当通过一个对 象调用一个方法时,运行时系统会将当前对象的引用传递到方法中,在方法中就可以通过this 访问这个对象。super表示当前类的直接父类。父类中的域可能被子类隐藏,父类中的方法可能被子类重写。 如果父类中的域被隐藏或方法被重写,则在子类中就访问不到这样的父类成员了。但是,在有些 情况下,还想访问被隐藏的域或被重写的方法,这种情况下则可以通过关键字super实现相应的 访问。4 .什么是多态性?如何实现多态性?答:同一类对象表现出的不同行为称为多态。多态的实现一定得在有继承关系的对象中。例如,
3、有一个类Base,它派生出多个子类,子类下面还派生子类,这些子类的对象都可以称为B类的 对象(赋值兼容规则),但是,每一个子类的对象的行为都与其他子类对象或Base类对象的行为 不同,这种行为上的不同称为多态性。5 .在一个学校中有教师和学生两类人员。学生信息有身份证号、学号、专业、姓名、性别、年 龄及数学、英语、Java程序设计三门课程的成绩。教师信息有身份证号、教师号、专业、姓名、 性别、年龄及授课的学时数。创建学生和教师的对象并输出对象的信息。答:import java.utiL*;public class exercise06_05(public static void main(St
4、ring args)int id;String code;String profession;String name;String sex;public class exercise06_08 (public static void main(String args)(Scanner reader=new Scanner(System.in); int type;type=reader.nextlnt();ElectricAppliance ea=null; if(type=l) (ea=new TV();)else iftype=2) (ea=new WashingMachine();)el
5、se ififtype=3) (ea=new Refrigerator();else iRtype=4) (ea=new MicrowaveOven();ea.working();int age;int math;int english;int java;Scanner reader=new Scanner(System.in);i d=reader. next I nt();code=reader.next();profession=reader.next();name=reader.next();sex=reader. ncxt();age=reader.nextlnt();inath=r
6、eader.nextlnt();english=reader.nextlnt();j ava=reader.nextl nt();Student stu=new Student(id,code,profession,name,sex,age,math,englishjava); stu.output();int times;id=reader.nextlnt();code=reader.next();profession=reader.next();naine=reader.next();sex=reader.next();age=reader. nextlnt();times=readcr.
7、nextlnt();Teacher teacher=new Teacher(id,code,profession,name,sex,age,times); teacher.output();)class Studentint id;String code;String profession;String name;String sex;int age;int math;int english;int java;public Student() public Student(int id,String code,String profession,String name,String sex,i
8、nt age,int math,int englishjnt java)this.id=id;this.code=code;this.profession=profession;this.name=name;this.sex=sex;this.age=age;this.math=math;this.english=english;this.java=java;)public void output()System.out.println(nid=*+id);System.out.println(ncode=H+code);System.out.println(nprofession=n+pro
9、fession);System.out.println(nname=,-l-name);System.out.println(Hsex=!,+sex);System.out.println(age=n+age);System.out.println(nmath=,+math);System.out.println(nenglish=n+english);System.out.println(Hjava=n-ijava);) )class Teacher(int id;String code;String profession;String name;String sex;int age;int
10、 times;public Teacher() public Teacher(int id,String code,String profession,String name,String sex,int age,int times )this.id=id;this.code=code;this.profession=profession;this.name=name;this.sex=sex;this.age=age;this.times=times;public void output()System.out.println(nid=n+id);System.out.println(nco
11、de=n+code);System.out.println(nprofession=,4-profession);System.out.println(nname=,-i-name);System.out.println(Hsex=H4-sex);System.out.println(Hage=n+age);System.out.println(ntimes=,+times);6 .有若干个直柱体(底面与柱面垂直),其底面可能是圆形、矩形或三角形。已知柱体的高度、 圆的半径、矩形的宽度和高度及三角形的三边长(一定能构成三角形),计算柱体的体积和表面 积(包括两个底的面积)。答:import j
12、ava.util.*;public class exercise06_06public static void main(String args)tScanner reader=new Scanner(System.in);double tl J2,t3,h;Shape sh=null;Triangle tr;Rectangle re;Circle ci;int type;/l=Circle;2=Rectangle;3=Triangletype=reader. nextl nt();if(type=l)(tl=reader.nextDouble();ci=new Circle(tl);sh=c
13、i;)else if(type=2)(tl =reader.nextDouble();t2=reader.nextDouble();re=new Rectangle(tl,t2);sh=re;else if(type=3)11 =reader.nextDouble();t2=reader.nextDouble();t3=reader.nextDouble();tr=new Triangle(tl,t2,t3);sh=tr;)h=reader.nextDouble();Straight_Cylinder sc=new Straight_Cylinder(sh,h); sc.output();)a
14、bstract class Shapepublic abstract double getPerimeter();public abstract double getArea();class Circle extends Shapedouble r;public Circle() public Circle(double r)this.r=r;)public double getPerimeter()/Ireturn 2*Math.PI*r;public double getArea()return Math.PI*r*r;)class Rectangle extends Shape(doub
15、le l,w;public Rectangle() public Rectangle(double 1,double w)this.1=1;this.w=w;public double getPerimeter() return 2*(l+w);)public double getArea()(return l*w;class Triangle extends Shape (double a,b,c;public Triangle() public Triangle(double a,double b,double c) tthis.a=a;this.b=b;this.c=c;)public
16、double getPerimeter()return a+b+c;)public double getArea() (double s=(a+b+c)/2;return Math.sqrt(s*(s-a)*(s-b)*(s-c);)class Straight_Cylinder(Shape bottom;double height;public Straight_Cylinder() public Straight_Cylinder(Shape s,double h)ibottom=s;height=h;)public double getSurfacearea()return 2*bott
17、om.getArea()+bottom.getPerimeter()*height;public double getVblume()return bottom.getArea()*height;)public void output()(System.out.println(Vdlume=n+getVblume()+nSurfacearea=n+getSurfacearea();7 .某学校教师的工资=基本工资+课时补贴。教授的基本工资为5000元,每学时补贴70元;副 教授的基本工资为3500元,每学时补贴60元;讲师的基本工资2600元,每学时补贴55元。已 知每个教师的学时数,计算每个
18、教师的每月工资数。答:import java.util.*;class Teacher(double baseSalary;double subsidy;int pHours;public Teacher(double bs,double sb,int h)baseSalary=bs;subsidy=sb;pHours=h;)public void output()System.out.println( baseSalary+subsidy*pHours);)class Professor extends Teacherpublic Professor(int h)super(5000,70,
19、h);class viceProfessor extends Teacherpublic viceProfessor(int h) super(3500,60,h);)class lecturer extends Teacherpublic lecturer(int h) (super(2600,55,h);public class exercise06_07(public static void main(String args)IScanner reader=new Scanner(System.in);int type,hs;type=reader.nextlnt();hs=reader
20、.nextlnt();Teacher teacher=null;if(type=l) (teacher=new Professor(hs);)else if(type=2) (teacher=new viceProfessor(hs);)else if(type=3)(teacher=new lecturer(hs);teacher.output();)8 .某家庭有电视机、洗衣机、电冰箱和微波炉。编程序显示家用电器的工作状态:电视机在播 放节目,洗衣机在洗衣服,电冰箱在制冷及微波炉在加热食物。答:import java.utiL*;abstract class ElectricApplian
21、cepublic ElectricAppliance()public abstract void working();class TV extends ElectricAppliance(public TV()()public void working()System, out. printin(电视机正在播放节目”);)class WashingMachine extends ElectricAppliance(public WashingMachine()/I)public void working()tSystem, out. printin(洗衣机正在洗衣服)class Refrigerator extends ElectricAppliance(public Refrigerator()/I)public void working()tSystem, out. printin(电冰箱正在制冷);class MicrowaveOven extends ElectricAppliance(public MicrowaveOven()()public void working()System, out. printin(微波炉正在加热食物)