Java语言程序设计(郑莉)第四章课后习题答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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;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;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方法(评测成绩=三门课平均分+3)publicclassStudentXWextendsStudent{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方法(评测成绩=三门课平均分+5)publicclassStudentBZe

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功