Java实验五

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

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

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

资源描述

《面向对象程序设计》实验报告第1页共7页实验五继承、抽象类和接口学号201617406姓名刘顺专业网络工程成绩【实验目的与要求】1、掌握Java中类的继承、变量继承、方法继承的思想和使用;2、理解和掌握java中多态性的覆写和重载的区别和用法;3、掌握抽象和接口的工作机制和用法;4、实验后及时总结、归纳、分析,并完成实验报告。【实验内容与要求】1、继承和覆盖的使用(1)编写Employee雇员类,在该类中定义了3个域:name表示员工姓名,salary表示员工的工资,work表示工作:“编写程序”,并分别为它们定义了set和get方法。(2)编写Manager经理类,该类继承自Employee雇员类。在该类中,定义了一个bonus域,表示经理的奖金,重写work方法:“管理项目”。(3)在主类中,创建Employee雇员和Manager经理对象,并为其赋值,输出其信息。2、抽象类的定义和使用(1)定义抽象类Aniaml动物抽象类,通过构造方法得到动物名字并输出;定义抽象方法shout()表示叫声;定义抽象方法eat()表示吃食。(2)定义Cat类继承自Animal类,调用父类的构造方法输出猫的名字信息。实现抽象方法shout(“猫叫:喵喵喵!”);实现抽象方法eat(“猫喜欢吃:鱼”)。(3)定义Dog类继承自Animal类,调用父类的构造方法输出狗的名字信息。实现抽象方法shout(“狗叫:汪汪汪!”);实现抽象方法eat(“狗喜欢吃:骨头”)。(4)在主方法中,实例化“小猫”和“小狗”,并向上转型赋给Aniaml类变量Animalani=newCat(小猫);分别调用ani的shout()和eat()方法。3、接口的定义和使用(1)定义一个USB接口标准,定义2个抽象方法:USB设备信息显示show();USB设备开始工作start();USB设备停止工作stop();(2)定义U盘子类,classFlashimplementsUSB实现USB接口标准,实现方法:USB接入产品信息show(“USB设备已经接入”);设备启动信息start(“USB设备已经启动”);设备停止动作信息stop(“USB设备已经停止”);(2)定义打印机子类,classPrintimplementsUSB实现USB接口标准,实现方法:打印机接入产品信息show(“打印机已经接入”);设备启动信息start(“打印机已经启动”);设备停止动作信息stop(“打印机已经停止”);(3)定义Computer类,定义插入USB方法plugin(USBusb),调用接口方法,实现接口功能。(4)在主类中定义Computer的对象,分别调用方法plugin(USBFlash)表示插入Flash优盘,plugin(USBprint)表示插入打印机。【实验过程与结果】实验1:实验程序classEmployee{//父类(员工类)privateStringname;//私有成员变量姓名privatedoublesalary;//私有成员变量工资privateStringwork;//私有成员变量工作//成员变量赋值publicvoidsetname(Stringname){《面向对象程序设计》实验报告第2页共7页this.name=name;}publicvoidsetsalary(doublesalary){this.salary=salary;}publicvoidsetwork(Stringwork){this.work=work;}//成员变量输出publicvoidgetname(){System.out.println(姓名:+name);}publicvoidgetsalary(){System.out.println(工资:+salary);}publicvoidgetwork(){System.out.println(工作:+work);}}classManagerextendsEmployee{//子类(经理类)privatedoublebonus;//私有成员变量奖金privateStringwork;//私有成员变量工作//成员变量赋值publicvoidsetbonus(doublebonus){this.bonus=bonus;}//成员变量输出publicvoidgetbonus(){System.out.println(奖金:+bonus);}//成员变量赋值publicvoidsetwork(Stringwork){this.work=work;}//成员变量输出publicvoidgetwork(){System.out.println(经理工作:+work);}}publicclassCompany{publicstaticvoidmain(String[]args){Employeep1=newEmployee();//实例化对象p1(员工)Managerp2=newManager();//实例化对象p2(经理)p1.setname(小明);//员工姓名p1.setsalary(5000);//员工工资《面向对象程序设计》实验报告第3页共7页p1.setwork(编写程序);//员工工作p1.getname();//调用输出p1.getsalary();//调用输出p1.getwork();//调用输出System.out.println(********分******割******线********);p2.setname(小李);//经理姓名p2.setsalary(5000);//经理工资p2.getname();//调用输出p2.getsalary();//调用输出p2.setbonus(2000);//经理奖金p2.setwork(管理项目);//经理工作p2.getbonus();//调用输出p2.getwork();//调用输出//TODO自动生成的方法存根}}实验结果:仅供参考:实验分析本实验主要考查Java中类的继承和覆盖,其中包括方法的继承和变量的继承,方法的重写。我先写了一个Employee雇员类,该类作为父类,在该类中定义了3个成员变量:name、salary、work,并分别为它们定义了set和get方法。set方法为成员变量赋值,get方法输出成员变量信息。之后又定义了Manager经理类,该类作为子类继承自Employee雇员类,在该类中定义了一个bonus成员变量,表示经理的奖金,重写work方法表示经理的工作,经理的其他信息都可继承自父类雇员类,且不需重写。最后在主方法中,分别创建Employee雇员的对象P1和Manager经理的对象P2,调用set和get方法即可,输出其信息。《面向对象程序设计》实验报告第4页共7页实验2:实验程序abstractclassAnimal{Stringname;publicAnimal(Stringname){this.name=name;System.out.println(动物:+name);}abstractpublicvoidgetname();abstractpublicvoidshout();abstractpublicvoideat();}classCatextendsAnimal{publicCat(Stringname){super(name);}publicvoidgetname(){};publicvoidshout(){System.out.println(猫叫:喵喵喵!);}publicvoideat(){System.out.println(猫喜欢吃:鱼!);}}classDogextendsAnimal{publicDog(Stringname){super(name);}publicvoidgetname(){}publicvoidshout(){System.out.println(狗叫:汪汪汪!);}publicvoideat(){System.out.println(狗喜欢吃:骨头!);}}publicclassZoon{《面向对象程序设计》实验报告第5页共7页publicstaticvoidmain(String[]args){Animalani1=newCat(小猫);ani1.shout();ani1.eat();Animalani2=newDog(小狗);ani2.shout();ani2.eat();//TODO自动生成的方法存根}}实验结果:参考结果:实验分析在本实验中,主要是考查对抽象类的定义和使用。相对来说和上一实验的继承有同源方法,理解上更简单。首先,我定义了一个抽象类Aniaml,可以理解为他就是父类,通过构造方法得到动物名字并输出,同时定义抽象方法shout()表示叫声,定义抽象方法eat()表示食物。而后我又定义了Cat类和Dog类均继承自Animal类,也可以理解为他们是Animal类的子类,可以直接调用父类的构造方法输出名字。调用实现抽象方法shout和抽象方法eat。最后在主方法中,实例化“小猫”和“小狗”的对象ani1和ani2,并向上转型赋给Aniaml类变量,分别调用ani1和ani2的shout()和eat()方法即可。实验3:实验程序interfaceUSB{abstractvoidshow();abstractvoidstart();abstractvoidstop();}《面向对象程序设计》实验报告第6页共7页classFlashimplementsUSB{publicvoidshow(){System.out.println(USB设备已经接入);}publicvoidstart(){System.out.println(USB设备已经启动);}publicvoidstop(){System.out.println(USB设备已经停止);}}classPrintimplementsUSB{publicvoidshow(){System.out.println(打印机已经接入);}publicvoidstart(){System.out.println(打印机已经启动);}publicvoidstop(){System.out.println(打印机已经停止);}}classComputer{voidplugin(USBusb){usb.show();usb.start();usb.stop();}}publicclassInterface{publicstaticvoidmain(String[]args){Computerp1=newComputer();p1.plugin(newFlash());p1.plugin(newPrint());}}实验结果:《面向对象程序设计》实验报告第7页共7页参考结果实验分析本实验主要考查接口的定义和使用。接口(interface)和抽象类(abstract)都可以理解为继承的衍生,接口和抽象类的使用十分相似。在本实验中,我首先定义了一个USB接口(类比于抽象类),和3个抽象方法,USB设备信息显示show(),USB设备开始工作start(),USB设备停止工作stop()。而后我又定义了U盘子类和打印机子类,并重写show()、start()和stop()方法,实现抽象方法。而后又定义了了Computer类,定义插入USB方法plugin(USBusb),即调用接口的方法,从而能够实现接口功能。最后在主方法中实例化Computer的对象,分别调用方法实现设备的接入和停止。【实验心得与体会】本实验主要考查Java中类的继承、多态性的覆写和重载的区别和用法以及抽象类和接口的用法。我觉得最重要的是类的继承。类的继承应该是基础,只有学会了继承,才有可能理解抽象类和接口。起初对于抽象类和接口我也有点不是特别理解,但是在调代码的过程中我发现,其实抽象类和接口有异曲同工之妙。都是相当于继承的衍生,先写一个父类,再通过子类调用父

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

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

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

×
保存成功