Java实验五.docx

上传人:b****5 文档编号:28832782 上传时间:2023-07-20 格式:DOCX 页数:12 大小:75.72KB
下载 相关 举报
Java实验五.docx_第1页
第1页 / 共12页
Java实验五.docx_第2页
第2页 / 共12页
Java实验五.docx_第3页
第3页 / 共12页
Java实验五.docx_第4页
第4页 / 共12页
Java实验五.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Java实验五.docx

《Java实验五.docx》由会员分享,可在线阅读,更多相关《Java实验五.docx(12页珍藏版)》请在冰豆网上搜索。

Java实验五.docx

Java实验五

实验五继承、抽象类和接口

学号6姓名刘顺专业网络工程成绩

【实验目的与要求】

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){

=name;

}

publicvoidsetsalary(doublesalary){

=salary;

}

publicvoidsetwork(Stringwork){

=work;

}

//成员变量输出

publicvoidgetname(){

"姓名:

"+name);

}

publicvoidgetsalary(){

"工资:

"+salary);

}

publicvoidgetwork(){

"工作:

"+work);

}

}

classManagerextendsEmployee{//子类(经理类)

privatedoublebonus;//私有成员变量奖金

privateStringwork;//私有成员变量工作

//成员变量赋值

publicvoidsetbonus(doublebonus){

=bonus;

}

//成员变量输出

publicvoidgetbonus(){

"奖金:

"+bonus);

}

//成员变量赋值

publicvoidsetwork(Stringwork){

=work;

}

//成员变量输出

publicvoidgetwork(){

"经理工作:

"+work);

}

}

publicclassCompany{

publicstaticvoidmain(String[]args){

Employeep1=newEmployee();//实例化对象p1(员工)

Managerp2=newManager();//实例化对象p2(经理)

("小明");//员工姓名

(5000);//员工工资

("编写程序");//员工工作

();//调用输出

();//调用输出

();//调用输出

"********分******割******线********");

("小李");//经理姓名

(5000);//经理工资

();//调用输出

();//调用输出

(2000);//经理奖金

("管理项目");//经理工作

();//调用输出

();//调用输出

//TODO自动生成的方法存根

}

}

实验结果:

仅供参考:

实验分析

本实验主要考查Java中类的继承和覆盖,其中包括方法的继承和变量的继承,方法的重写。

我先写了一个Employee雇员类,该类作为父类,在该类中定义了3个成员变量:

name、salary、work,并分别为它们定义了set和get方法。

set方法为成员变量赋值,get方法输出成员变量信息。

之后又定义了Manager经理类,该类作为子类继承自Employee雇员类,在该类中定义了一个bonus成员变量,表示经理的奖金,重写work方法表示经理的工作,经理的其他信息都可继承自父类雇员类,且不需重写。

最后在主方法中,分别创建Employee雇员的对象P1和Manager经理的对象P2,调用set和get方法即可,输出其信息。

实验2:

实验程序

abstractclassAnimal{

Stringname;

publicAnimal(Stringname){

=name;

"动物:

"+name);

}

abstractpublicvoidgetname();

abstractpublicvoidshout();

abstractpublicvoideat();

}

classCatextendsAnimal{

publicCat(Stringname){

super(name);

}

publicvoidgetname(){

};

publicvoidshout(){

"猫叫:

喵喵喵!

");

}

publicvoideat(){

"猫喜欢吃:

鱼!

");

}

}

classDogextendsAnimal{

publicDog(Stringname){

super(name);

}

publicvoidgetname(){

}

publicvoidshout(){

"狗叫:

汪汪汪!

");

}

publicvoideat(){

"狗喜欢吃:

骨头!

");

}

}

publicclassZoon{

publicstaticvoidmain(String[]args){

Animalani1=newCat("小猫");

();

();

Animalani2=newDog("小狗");

();

();

//TODO自动生成的方法存根

}

}

实验结果:

参考结果:

实验分析

在本实验中,主要是考查对抽象类的定义和使用。

相对来说和上一实验的继承有同源方法,理解上更简单。

首先,我定义了一个抽象类Aniaml,可以理解为他就是父类,通过构造方法得到动物名字并输出,同时定义抽象方法shout()表示叫声,定义抽象方法eat()表示食物。

而后我又定义了Cat类和Dog类均继承自Animal类,也可以理解为他们是Animal类的子类,可以直接调用父类的构造方法输出名字。

调用实现抽象方法shout和抽象方法eat。

最后在主方法中,实例化“小猫”和“小狗”的对象ani1和ani2,并向上转型赋给Aniaml类变量,分别调用ani1和ani2的shout()和eat()方法即可。

实验3:

实验程序

interfaceUSB{

abstractvoidshow();

abstractvoidstart();

abstractvoidstop();

}

classFlashimplementsUSB{

publicvoidshow(){

"USB设备已经接入");

}

publicvoidstart(){

"USB设备已经启动");

}

publicvoidstop(){

"USB设备已经停止");

}

}

classPrintimplementsUSB{

publicvoidshow(){

"打印机已经接入");

}

publicvoidstart(){

"打印机已经启动");

}

publicvoidstop(){

"打印机已经停止");

}

}

classComputer{

voidplugin(USBusb){

();

();

();

}

}

publicclassInterface{

publicstaticvoidmain(String[]args){

Computerp1=newComputer();

(newFlash());

(newPrint());

}

}

实验结果:

参考结果

实验分析

本实验主要考查接口的定义和使用。

接口(interface)和抽象类(abstract)都可以理解为继承的衍生,接口和抽象类的使用十分相似。

在本实验中,我首先定义了一个USB接口(类比于抽象类),和3个抽象方法,USB设备信息显示show(),USB设备开始工作start(),USB设备停止工作stop()。

而后我又定义了U盘子类和打印机子类,并重写show()、start()和stop()方法,实现抽象方法。

而后又定义了了Computer类,定义插入USB方法plugin(USBusb),即调用接口的方法,从而能够实现接口功能。

最后在主方法中实例化Computer的对象,分别调用方法实现设备的接入和停止。

【实验心得与体会】

本实验主要考查Java中类的继承、多态性的覆写和重载的区别和用法以及抽象类和接口的用法。

我觉得最重要的是类的继承。

类的继承应该是基础,只有学会了继承,才有可能理解抽象类和接口。

起初对于抽象类和接口我也有点不是特别理解,但是在调代码的过程中我发现,其实抽象类和接口有异曲同工之妙。

都是相当于继承的衍生,先写一个父类,再通过子类调用父类的成员变量和方法。

实现过程中先写一个大类(父类),方法为抽象方法,即只有方法格式方法头,没有实际功能,再写若干子类,在子类中实现抽象方法,即写出方法体。

在这一过程中还用到了多态性的覆写。

多态性的覆写主要是为了实现父类中的方法的功能,跟方法的重载也有相似之处。

在主方法中实例化对象的时候,可能还会用到向上转型和向下转型。

感谢老师在实验过程中的指导与帮助,谢谢老师。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1