您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Java语言程序设计(郑莉)第五章课后习题答案
Java语言程序设计第五章课后习题答案1.什么是接口?接口起什么作用?接口与抽象类有何区别?答:Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。作用:接口是面向对象的一个重要机制,使用接口可以实现多态继承;接口中的所有方法都是抽象的,这些抽象方法由实现这一接口的不同类型来具体;接口还可以用来实现不同类之间的常量共享。与抽象类不同的是:接口允许在看起来不相干的类之间定义共同行为。2.试编程证明接口中的属性都隐含为static及final,所有的方法都为public。//定义接口Shape2DinterfaceShape2D{doublePi=3.14;doublearea();}//Circle类继承接口Shape2DpublicclassCircleimplementsShape2D{doubleradius;publicCircle(doubler){radius=r;}publicdoublearea(){returnPi*radius*radius;}}//A类(测试接口中隐含final的area()方法)publicclassAextendsShape2D{publicdoublearea();}//test5_2publicclasstest5_2{publicstaticvoidmain(Stringargs[]){Circlec=newCircle(10);System.out.println(Pi=3.14圆的面积:+c.area());SetPib=newSetPi(3.00);System.out.println(改变Pi=3.00圆的面积:+c.area());}}运行结果:3.在什么情况下,可以对父类对象的引用进行强制类型转换,使其转化成子类对象的引用?答:一个对象被塑型为父类或接口后,可以再一次被塑型回到它原来所属的类,即转化成原类对象的引用。4.声明一个接口,此接口至少具有一个方法;在一个方法中声明内部类实现此接口,并返回此接口的引用。//A类接口publicinterfaceA{voidfuck();}//B类publicclassB{publicAfuck(){returnnewA(){publicvoidfuck(){System.out.println(B类声明实现A接口类并返回接口的应用——Fuckyou!);}};/*注意这里有分号“;”*/}}//test5_4publicclasstest5_4{publicstaticvoidmain(String[]args){newB().fuck().fuck();}}运行结果:5.声明一个具有内部类的类,此内部类只有一个非默认的构造方法;声明另外一个具有内部类的类,此内部类继承第一个内部类。//A类classA{classClassOfA{publicClassOfA(){}}}//B类publicclassB{classClassOfBextendsA.ClassOfA{publicClassOfB(Ab){b.super();}}}6.声明一个具有两个方法的类,在第一个方法中调用第二个方法。声明此类的一个子类,并在子类中重写第二个方法。生成一个子类的对象,并将其塑型为基类,调用第一个方法,解释会发生什么?//A类publicclassA{publicStringWay1(){returnA的方法1和+Way2();}publicStringWay2(){returnA的方法2;}}//B类publicclassBextendsA{publicStringWay2(){returnB的方法2;}}//test5_6publicclasstest5_6{publicstaticvoidmain(Stringargs[]){Aa=newB();System.out.println(a.Way1());}}7.什么是多态?如何实现多态?答:多态性是指不同类型的对象可以响应相同的消息。利用向上塑性技术,一个父类的应引用变量可以指向不同的子类对象;而利用动态绑定技术,可以再运行时根据父类引用变量所指对象的世纪类型执行相应的子类方法,从而实现多态性。8.在第4章习题10的基础上,声明测试类完成对多态性的测试。(1)在主方法中声明Student类的数组(含五个元素)(2)生成五个对象存入数组:其中三个Student类的对象、一个StudentXW类的对象、一个StudentBZ类的对象。(3)将方法testScore()发送给数组的每一个元素,输出结果,并分析具体执行的是哪一个类中的方法。//Student类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;}*/}//StudentXWpublicclassStudentXWextendsStudent{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);}}//StudentBZpublicclassStudentBZextendsStudent{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+\
本文标题:Java语言程序设计(郑莉)第五章课后习题答案
链接地址:https://www.777doc.com/doc-2879051 .html