类继承与接口(二)实验报告.docx
实验十类继承与接口二课程名称:面向对象程序设计实验实验工程名称:次验十类继承与接口(二)学生姓名:_专业:_学号:实验地点:实验日期:一年JJ一【实验目的】1.挈探JaVa类的继承特点,包拈子类声明、对象创立、成员变fit的继承叮防藏.成员方法的融承与垄写【实验内容】10-1程并阅读分析JS.要求有个abstract类.类名为EmPIOyee.EmPtoyee的子类有YearWOrker.MOnthWOrker和WeekWorker.YearWorker对软按年饭取薪水,MonthVVOrker按月浜取薪水,WeekWorker按冏领取薪水,EmP1.Oyee类存个abstract方法,子类必须血与父类的earings()方法,给出各自领取报班的具体方式,2)何一个Company类,该类用emp1.oyee数2作为成员.emp1.oyee数2的第元可以是YearWorker收的上转型对象.MonmWorker对软的卜转型对象或MWeekWOrker对余的上转型对象.源程序:(请将源程序中补充的空缺代码处以穴划规黑粗显示):abstractc1.assEmpoyeepub1.icabstractdoub1.eear11ings():)c1.assYearWorkerextendsEmp1.oyee敢写earningsO方法代码1.)c1.assMonthWorkerextendsEmp1.oyee,俚玛earningsO方法)c1.assWeekWorkerextendsEmp1.oyeef一写earnings()方法代码3,)c1.assCompany(EmpIoyeeQemp1.oyee;doub1.esa1.aries=。;Company(Emp1.oyee!)empoyee)this.emp1.oyee-emp1.oyee;pub1.icdoub1.eSa1.arieSPay()saariesO;计算sa1.aries代码明returnsa1.aries;)pub1.icc1.assHardWorkpub1.icstaticvoidmai(St11ngargs)Emp1.oyee。emp1.oye=newEmp1.oyee(20;for(inti=0;i<emp1.oyee.1.ength;i+)rt(i%3-0)emp1.oyee。=newWeekWorke):e1.sef(1.%3=i)empioyee(i1.=newMonthWorker();e1.seif(i%3-2)emp1.oyee。=newYearWorKerO;)Companycompany=newComPany(emp1.oyee);SyStem.Ou1.printInC公司年工资总额:"+mpany.sa1.ariesPayO);)代码,abstractc1.assEmp1.oyee(pub1.icabstractdoub1.eearnngs();)c1.assYeatWorkerextendsEmPtoyeeH9.',>earnings()方法pub1.icdoub1.eearnngs()return80000.0;c1.assMonihWofkerextendsEmptoy鲍pub1.icdoub1.eearnings()return60000.0;)1c1.assWeekWorkerextendsEmp1.oyee(pub1.icdoub1.ecarnings()return400.0;)c1.assCompayEmpIoyeeUemp1.oyee;doub1.esa1.aries-O;ComPany(EmPIOyccemp1.oyee)1.his.mp1.oyee=emp1.oye;pub1.icdoub1.esa1.ariesPay()(sa1.aries=O;for(inti«0;i<emp1.oyee.1.ength;ir)sa1.aries-sa1.aries»empoyeei).ear11ings();returnsa1.aries:pub1.icc1.assHardWork(pub1.icstaticvoidmain(Stringargs()(EmpIoyeeOemp1.oyee-newEmpoyee20;for(inti=0;i<emp1.oyee.1.ength;i+)if(i%3=0)emp1.oyee。卜nev,WeekWOrker();e1.sert(i%3-1)emp1.oyee。=newMonthWorKerO;e1.sef(i%3=2)emp1.oyee何=newYearWorker();)Companycompany=newCompany(emp1.oyee);SyStem.out.PriMInr公司年I:资总频:"+company.sariesPay();1。2.检查下面代码是否有错,如果有错,写明错误原因,并修正错误.1. c1.assAaaintI;Aaa()i=-1j)Aaa(inta)i=a;Aaa(doub1.ed)Aaa(int)d);)是否出是.出借原因(如果出).构造星不能调用构造.改为Aaa(doub1.ed)(1.=(Int)d;2. c1.assAaaintI;Aaa()i=-1;)Aaa(inta)i=a;Aaa(doub1.ea)1.ntb=(int)a;th1.s(b);)是否出«出事原因(如果出幡)»this(M)只能为H一句.改为Aaa(dOUbIea)this(int)a);3. c1.assAaainti;Aaa(inta)i三a;1c1.assBbbextendsAaa(Bbb()是否出借;«,出借原因(如果出传)»Bbb()(中没有调用Aaa中的构IM1.BbtXHsuper(IO);4. c1.assAaaprivateinti;protectedintj;)c1.assBbbextendsAaa(Bbb()i=10;J=99;是否出«出懵*因(如果出幡)tBbb的直按IB类Aaa中的实例变量i权限为private,在Bbb中不可将inti;的权限改为至少为protected.5. 译下面程序,程序是否出*c1.assAIntI=100;c1.assBextendsAintI=10000;pub1.icstaticvoidma1.n(String11args)System.out.print1.n(this.i);System.out.print1.n(super.i);)a)是否出b)出借因(如果出借)»D:5yprojectJav1.H>jauCA.jav«R-:?:无臧薛态上下文中引用非群态变量thisS93ten.out.print1.n<this.i>;kj-M-:8:无法从静态上下文中引用非静态变量superSysten.out.print1.n<8upe1*.i>;错误(2)如果带上述类B的inti=10000改为staticinti=10000;类A的Irrti=100改为staticinti=100;程序是否出借?出借JK因(如果出借),出侑.不能在本上下文中引用this和SUPer(3)如果竹类B的main方法改为pub1.icstaticvoidmain(StringOargs)Bb=nwB();System.out.print1.n(b.i);System.out.print1.n((八)b.i);程序是否出借?出借原因(如果出借)»出借.(八)b.i废该为A.i,并轿类A的inti=100改为staticinti=100;如果没出借,蛤出结果:上HI的SyStemQUt.print1.n(b.i)的含义:System.out.pr1.nt1.n((八)b.i)的含义:6. c1.assAaainti;pub1.icvoidAaa(inta)i=a;)pub1.icstaticvoidma1.n(Str1.ng11args)Aaaa=newAaa(10);)是否出错:是出借原因(如果出修).pub1.icvoidAaa(inta)1.=a;应为构造f1.h不是方法,改为pub1.icAaa(1.nta)1.=a;7. c1.assAaapub1.icstaticvoidmain(String11args)IntOOa=newintSO;for(Int1.=0;1.<a.1.ength;!+)for(intj=O;i<ai.1.ength;j+)aij=(int100*Math.randomO);System.out.print1.n(aij);)是否出是出借因(如果出借)»int1111a=newint5;中没有列数量,改为int1111a=newint55;U且for(intj=0J<ai.1.engthjj+÷)4i<ai.1.ength:Jfijj<ai.1.ength8. c1.assAintabc(inti)(retum1;方法1Intabc(1.ntj)return2;1.'2intabc(inti,intj)return3;)ZC¾13voidabc(int1.),方法4是否在槽,上面类A中定义的四个方法是否都是方法的,存没有震定义的方法,如果有,那么要几个方法是复定义的?不是.有无定义的方法,方法1.2,4为方法复定义.9. c1.assA(voidshow()System.out.print1.n("A类的show()");c1.assBextendsAintshow()System.out.print1.n("B类的show()");)pub1.icstaticvoidmain(Str1.ngargs)Bb=newB();b.show();上面程序中的方法BUf是否出是.出事因(如果出幡)»类A中的方法voidShOM)和类B中的方法IntShOM)不同如果将类B中的方法Showoa*,intshow(intb)System.out.pr1.nt1.n("B类的show()");returnb;看序是否出?实!域告要求将编程眶源程序、运行结果,以及实险中遇到的问题和解决问题的方法,可在失稳报告匕