面向对象的高级特性-参考答案_第1页
面向对象的高级特性-参考答案_第2页
面向对象的高级特性-参考答案_第3页
面向对象的高级特性-参考答案_第4页
面向对象的高级特性-参考答案_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

选择题1、给定下列代码:B.cla^s.super{.publicfIost.g已tlxfum(){retLirn3.0f;}3.)5.publiccla^sSubextendsSLiper{6._当.第PublicfloatgetNiun(){return4.Of:}PublicvoidgetNiun(){}PublicvoidgetNiun(doubled){}PublicdoublegetNum(floatd){retnin4.Of:}2、给定以下代码:BTOC\o"1-5"\h\z.iriT.e匚壬日匚己3已匸3{}..3.cla^sAlphaimplementsBeta{4»St.ringt.(){5.reTLi匚口vxTestedf/;G}厂}8.9.publicclassMaini{10113T.aT.icBetage.~I~()1011returnnewAlpha();1415314153-M句定E:口匕印字符曰匸”1:二v匸;id编译译失败(String[]a.rg^){EEt.码行功g无输出t.();System.out.pri匸匸丄n(b.());}个publicmtMAX_LENGTH=1UU;finalintMAX_LENGTH=100;finalpublicintMAX_LENGTH=100;publicfinalintMAX_LENGTH=100.4、给出以下代码,请问该程序的运行结果是什么?(B)1.classA{staticvoidfoo(inti){};}classBextendsA{voidfoo(inti){};}A第1行编译错误。B第2行编译错误C代码编译成功。//静态方法不能被重写4、有关类的说法正确的是(B)A.类具有封装性,所以类的数据是不能被访问的B.类具有封装性,但可以通过类的公共接口访问类中的数据声明一个类时,必须使用public修饰符每个类中必须有main方法,否则程序无法运行5、将类的访问权限设置为默认的,贝9该成员能被(A)同一包中的类访问B.其他包中的类访问C.所有的类访问D.所有的类的子类访问6、假设下面的程序代码都放在MyClassjava文件中,(D)程序代码能够编译通过。importjava.awt.*;packagemypackage;calssMyClass{}packagemypackage;importjava.awt.*;publicclassmyClass{}intm;packagemypackage;importjava.awt.*;classMyClass{}/*Thisisacomment*/packagemypackage;importjava.awt.*;publicclassMyClass{}7、假设在java源程序文件“MyClassjava”中只含有一个类,而且这个类必须能够被位于-个庞大的软件系统中的所有java类访问到,那么下面(C)声明有可能是符合要求的类声明。privateclassMyClassextendsObjectpublicclassmyclassextendsObjectpublicclassMyClassclassMyClassextendsObjectII程序分析题1、分析并完善如下程序,并写出最后执行结果:classPerson{Stringname="zhangsan";intage=18;doubleheight=1.75;publicPerson(){System.out.println("Person()");}publicPerson(Stringn){System.out.println("Person(Stringn)");name=n;}publicPerson(Stringn,inta,doubleh){System.out.println("Person(Stringn,inta,doubleh)");name=n;age=a;height=h;}publicvoidsayHello(){System.out.println("Hello!");}}classStudent4extendsPerson{doublescore=0;publicStudent4(){__this__("aa",10);System.out.println("Student()");}publicStudent4(Stringn,doubles){__super__(n);score=s;System.out.println("Student(Stringn,doubles)");}publicStudent4(Stringn,inta,doubleh,doubles){__this__(n,s);age=a;height=h;score=s;System.out.println("Student(Stringn,inta,doubleh,doubles)");}publicvoidstudy(){score++;}publicvoidsayHello(){__this/super__.sayHello();System.out.println("Hello,teacher!");inti=this.age;intj=super.age;}publicstaticvoidmain(Stringargs[]){Student4s4=newStudent4();__s4__.sayHello();}}2、找出程序中的错误,并说明原因:publicclassFinalVar{finalinty=100;finalintx1;publicFinalVar(){x1=1;}publicstaticvoidmain(String[]args){finalintz=0;}publicvoidaa(){FinalVar.add(1);}publicstaticvoidadd(finalintx2){x2++;//错了final不许修改}}3、找出程序中的错误,并说明原因:(finalclassFinalClass{publicvoidadd(intx){x++;}}publicclassSubFinalDemoextendsFinalClass{//不能被继承publicvoidadd(intx){x+=2;}}4、找出程序中的错误,并说明原因:classFinalClass{publicfinalvoidadd(intx){x++;x++;}}publicclassSubFinalDemoextendsFinalClass{publicvoidadd(intx){//不能在子类中被覆盖,即不能修改。x+=2;}}Ill编程题1、如下两个类之间存在一定的联系,请用面向对象的特性实现类及其关系x++;x++;x++;x++;Person电mamw:String屍津的:Ini^heightdouble^PersanQ^sayHello^)Student^name:StringStage:mtS^height:double^scor^:double•Student。*studyO*&syneiloOx++;x++;x++;x++;publicclassPerson{Stringname;intage;doubleheight;Person(){}publicvoidsayHello(){}}publicclassStudentextendsPerson{doublescore;publicvoidstudy(){}}2、(1)定义一个汽车类Vehicle,要求如下:(a)属性包括:汽车品牌brand(String类型)、颜色color(String类型)和速度speed(double类型)。(b)至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)。为属性提供访问器方法。注意:汽车品牌一旦初始化之后不能修改。定义一个一般方法run(),用打印语句描述汽车奔跑的功能定义测试类VehicleTest,在其main方法中创建一个品牌为"benz”、颜色为"black”的汽车。publicclassVehicle{privateStringbrand;privateStringcolor;privatedoublespeed;Vehicle(){}Vehicle(Stringbrand,Stringcolor){this.brand=brand;this.color=color;speed=0;}publicStringgetColor(){returncolor;}publicvoidsetColor(Stringcolor){this.color=color;}publicdoublegetSpeed(){returnspeed;}publicvoidsetSpeed(doublespeed){this.speed=speed;}publicvoidrun(){System.out.println(getColor()+"的"+getBrand()+"的速度是"+getSpeed());}publicStringgetBrand(){returnbrand;}}(2)定义一个Vehicle类的子类轿车类Car,要求如下:轿车有自己的属性载人数loader(int类型)。提供该类初始化属性的构造方法。重新定义run(),用打印语句描述轿车奔跑的功能。定义测试类Test,在其main方法中创建一个品牌为"Honda”、颜色为"red”,载人数为2人的轿车。publicclassCarextendsVehicle{intloader;Car(){}Car(Stringbrand,Stringcolor,intloader){super(brand,color);this.loader=loader;}publicvoidrun(){System.out.println(getColor()+"的载人数"+loader+getBrand()+"的速度是"+getSpeed());}}publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubCarcar=newCar("Honda","red",2);car.run();}3、设计四个类,分别是:(1)Shape表示图形类,有面积属性area、周长属性per,颜色属性color,有两个构造方法(一个是默认的、一个是为颜色赋值的),还有3个抽象方法分别是:getArea计算面积、getPer计算周长、showAII输出所有信息,还有一个求颜色的方法getColor。publicabstractclassShape{doublearea;doubleper;charcolor;Shape(){}Shape(charcolor){this.color=color;}publicabstractdoublegetArea();publicabstractdoublegetPer();publicabstractvoidshowAll();publicchargetColor(){returncolor;}(2)2个子类:1)Rectangle表示矩形类,增加两个属性,Width表示长度、height表示宽度,重写getPer、getArea和showAll三个方法,另外又增加一个构造方法(一个是默认的、一个是为高度、宽度、颜色赋值的)。publicclassRectangleextendsShape{doublewidth;doubleheight;Rectangle(){}Rectangle(doublewidth,doubleheight,charcolor){super(color);this.width=width;this.height=height;}@OverridepublicdoublegetArea(){area=width*height;returnarea;}@OverridepublicdoublegetPer(){per=2*(width+height);returnper;}@OverridepublicvoidshowAll(){System.ou亡.println("长:"+width);System.ou亡.println("宽:"+height);System.out.println("面积:"+getArea());System.out.println("周长:"+getPer());System.out.println("颜色:"+getColor());}}2)Circle表示圆类,增加1个属性,radius表示半径,重写getPer、getArea和showAll三个方法,另外又增加两个构造方法(为半径、颜色赋值的)。}}publicclassCircleextendsShape{finaldoublepi=3.14;doubleradius;Circle(){}Circle(doubleradius,charcolor){super(color);this.radius=radius;}@OverridepublicdoublegetArea(){area=pi*radius*radius;returnarea;}@OverridepublicdoublegetPer(){per=2*pi*radius;returnper;}@OverridepublicvoidshowAll(){System.ou亡.println("半径:"+radius);System.out.println("面积:"+getArea());System.out.println("周长:"+getPer());System.out.println("颜色:"+getColor());}}(3)一个测试类PolyDemo,在main方法中,声明创建每个子类的对象,并调用2个子类的showAll方法。publicclassPolyDemo{publicstaticvoidmain(String[]args){Rectangler=newRectangle(1,2,'蓝');Circlec=newCircle(1.2,'红');r.showAll();System.out.println("");c.showAll();System.out.println("");4、Cola公司的雇员分为以下若干类:ColaEmployee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(intmonth)根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。SalariedEmployee:ColaEmployee的子类,拿固定工资的员工。・属性:月薪HourlyEmployee:ColaEmployee的子类,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数SalesEmployee:ColaEmployee的子类,销售人员,工资由月销售额和提成率决定。・属性:月销售额、提成率定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类TestCompany,在main方法,把若干各种类型的员工放在一个ColaEmployee数组里,并单元出数组中每个员工当月的工资。publicabstractclassColaEmployee{Stringname;intyear;intmonth;intday;ColaEmployee(){}ColaEmployee(Stringname,intyear,intmonth,intday){=name;this.day=day;this.month=month;this.year=year;}abstractdoublegetSalary(intmonth);}publicclassSalariedEmployeeextendsColaEmployee{doublesalary;SalariedEmployee(){}SalariedEmployee(Stringname,intyear,intmonth,intday,doublesalary){}}super(name,year,month,day);this.salary=salary;}@OverridedoublegetSalary(intmonth){if(month==this.month){salary+=100;}returnsalary;}}publicclassSalesEmployeeextendsColaEmployee{doublemonthSalary;doublerate;SalesEmployee(){}publicclassHourlyEmployeeextendsColaEmployee{doublehourSalary;inthour;HourlyEmployee(){}HourlyEmployee(Stringname,intyear,intmonth,intday,doublehourSalary,inthour){super(name,year,month,day);this.hourSalary=hourSalary;this.hour=hour;}@OverridedoublegetSalary(intmonth){doublesalary=0;if(hour<=160){salary=hour*hourSalary;}else{salary=160*hourSalary+(hour-160)*hourSalary*1.5;if(month==this.month){salary+=100;}returnsalary;}}SalesEmployee(Stringname,intyear,intmonth,intday,doublemonthSalary,doublerate){super(name,year,month,day);this.monthSalary=monthSalary;this.rate=rate;}@OverridedoublegetSalary(intmonth){doublesalary=monthSalary*rate;if(month==this.month){salary+=100;}returnsalary;}}publicclassCompany{staticvoidgetSalary(intmonth,ColaEmployeec){System.out.println(month+"月"++"的工资:"+c.getSalary(month));}}publicclassTestCompany{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubColaEmployee[]a=newColaEmployee[3];a[0]=newSalariedEmployee("大川",1988,2,29,3500);a[1]=newHourlyEmployee("海鸥",1988,2,29,20,200);a[2]=newSalesEmployee("abc",1988,5,10,30000,0.1);

for(ColaEmployeec:a){Company.getSalary(2,c);}}}5、利用接口实现动态的创建对象:(1)创建4个类1苹果香蕉葡萄园丁(2)在三种水果的构造方法中打印一句话.以苹果类为例classapple{publicapple(){System.out.println("创建了一个苹果类的对象")}}(3)类图如下:<<接口>>FruitAPPlAPPlePearGardener+create():Fuit4)要求从控制台输入一个字符串,根据字符串的值来判断创建三种水果中哪个类的对象。运行结果如图:ProblemsJavadocHeelerat]on^ternirLated}test[JavaApplication]C:\Pr&gr苹果创矗了j丰丰果的对象publicabstractinterfaceFruit{}publicclassAppleimplementsFruit{Apple(){System.out.println(“创建了一个苹果类的对象");}}publicclassBananaimplementsFruit{Banana(){System.out.println("创建了一个香蕉类的对象");}}publicclassPutaoimplementsFruit{Putao(){System.out.println("创建了一个葡萄类的对象");}}publicclassGardener{publicFruitcreat(){Fruitf=null;Scannerinput=newScanner(System.in);Stringname=input.next();if(name.equals("苹果")){f=newApple();}elseif(name.equals("香蕉")){f=newBanana();}elseif(name.equals("葡萄")){f=newPutao();}else{System.out.println("不会种");}returnf;6、Person类,如下图:两个测试类,访问该Person类,要求(1)TestMain和Person在相同包中test2中(2)TestMain在包testl中,Person在包test2中(知识点:Java中包的概念)7、修改原来的Person类,将其进行良好的封装packagecom.neusot.test2;publicclassPerson{privateStringname;privateintage;privatedoubleheight;publicvoidperson(){}publicvoidsayHello(){}publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}publicdoublegetHeight(){returnheight;}publicvoidsetHeight(doubleheight){this.height=height;}}8、编写三个系别的学生类:英语系,计算机系,文学系(要求通过继承学生类)各系有以下成绩:英语系:演讲,期末考试,期中考试;计算机系:操作能力,英语写作,期中考试,期末考试;文学系:演讲,作品,期末考试,期中考试;各系总分评测标准:英语系:演讲50%期末考试25%期中考试25%计算机系:操作能力40%英语写作20%期末考试20%期中考试20%文学系:演讲35%作品35%期末考试15%期中考试15%定义一个可容纳5个学生的学生类数组,使用随机数给该数组装入各系学生的对象,然后按如下格式输出数组中的信息:学号:XXXXXXXX姓名:XXX性另|J:X年龄:XX综合成绩:XXpublicabstractclassStudent{Stringname;Stringid;Stringsex;intage;doublelastScore;//期末成绩doubleminScore;//期中成绩Student(Stringname,Stringid,Stringsex,intage,doublelastScore,doubleminScore){=name;this.age=age;this.id=id;this.sex=sex;this.lastScore=lastScore;this.minScore=minScore;}Student(){}publicabstractdoublegetScore();//获取最终成绩publicvoidshow(){System.ou亡.println("学号:"+id+"姓名:"+name+"性另U:"+sex+"年龄:"+age+"综合成绩:"+getScore());}publicclassEnglishextendsStudent{doublespeekScore;English(){}English(Stringname,Stringid,Stringsex,intage,doublelastScore,doubleminScore,doublespeekScore){super(name,id,sex,age,lastScore,minScore);this.speekScore=speekScore;}publicdoublegetScore(){returnlastScore*0.25+minScore*0.25+speekScore*0.5;}}publicclassComputerextendsStudent{doublemakeScore;//操作成绩doubleengScore;//英语写作成绩Computer(){}Computer(Stringname,Stringid,Stringsex,intage,doublelastScore,doubleminScore,doublemakeScore,doubleengScore){super(name,id,sex,age,lastScore,minScore);this.makeScore=makeScore;this.engScore=engScore;}@OverridepublicdoublegetScore(){//TODOAuto-generatedmethodstubreturnlastScore*0.2+minScore*0.2+engScore*0.2+makeScore*0.4;publicclassLiteratureextendsStudent{doublespeekScore;doublecomp

温馨提示

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

评论

0/150

提交评论