【实验】java继承和多态实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【关键字】实验
java继承和多态实验报告
篇一:Java实验五继承与多态
实验五继承与多态
一、实验目的
1. 掌握抽象类的声明;
2. 掌握多态的执行机理;
3. 掌握上转型的使用;
4. 掌握构造方法的执行机理;
5. 面向抽象的编程;
二、实验内容
1. 假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,
如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均超过80分才能够通过。
根据上述要求,请完成以下Java类的设计:
(1)设计一个基类Student描述学生的共同特征。
(2)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。
(3)设计一个描述研究生的类Graduate,该类继承并扩展Student类。
(4)设计一个尝试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。
2. 假定要为某个公司编写雇员(40个雇员)工资支付程序,这个公司有各种类型
的雇员(Employee),不同类型的雇员按不同的方式支付工资:
(1)经理(Manager)——每月获得一份固定的工资
(2)销售人员(Salesman)——在基本工资的基础上每月还有销售提成。
(3)一般工人(Worker)——则按他每月工作的天数计算工资。
根据上述要求试用类的继承和相关机制描述这些功能,并编写一个Java Application程序,演示这些类的用法。
(提示:应设计一个雇员类(Employee)描述所有雇员的共图特性,这个类应该提供一个计算工资的抽象方法ComputeSalary( ),使得可以通过这个类计算所有雇员的工资。
经理、销售人员和一般工人对应的类都应该继承这个类,并重新定义计算工资的方法,进而给出它的具体实现。
(用对象数组)
三、实验报告涉及以下内容
1. 继承中父子构造方法的执行关系
2. 重写
3. super的应用
4. 上转型
5. 多态
篇二:java实验报告2 继承多态封装
实验报告
学生姓名:学号:专业班级:
实验类型:□ 验证□ 综合□ 设计□ 创新实验日期:实验成绩:
一、实验项目名称抽象、封装与类(一)
二、实验目的
1. 掌握抽象、封装、继承和多态
2. 熟练掌握如何自定义一个类。
(本文来自:小草范文网:java继承和多态实验报告) 3. 掌握类的访问权限
4. 掌握类成员的访问控制
三、实验基本原理
四、主要仪器设备及耗材
Myclipse
五、实验步骤
1、调试程序例3-4
2、编写如下程序。
(1)定义一个表示学生的类Student,包括属性“学号”、“班号”、“姓名”、“性别”、“年龄”;方法“获得学号”、“获得班号”、“获得姓名”、“获得性别”、“获得年龄”、“修改年龄”。
(2)为Student类定义构造函数初始化所有属性,增加一个方法public String toString(),把Student类对象的所有属性信息组合成一个字符串输出。
(3)在main()中创建Student类对象,尝试自定义类。
六、实验数据及处理结果
1、package ncu;
public class Exam3_4 {
} static double d; public static void main(String args[]){ int i; Exam3_4 pt=new Exam3_4(); i=5; pt.changeInt(i); "int type value is:"+i); pt.d=6.25; pt.changeDouble(pt); "double type value is"+d); } public void changeInt(int v) {v=10;} public void changeDouble(Exam3_4 ref) {ref.d=10.5;}
2、package ncu;
public class student {
private int id; private String name; private String tel; private String addr; private static int total; public int getid(){ } public void setid(int id){ return this.id;
} this.id=id; public String getname(){ } return name;
public void setname(String name){=name; }
public String gettel(){
return tel; }
public void settel(String tel){this.tel=tel; }
public String getaddr(){
return addr; }
public void setaddr(String addr){this.addr=addr;
}
public student(){
total++;
id=total; }
public student(String name){total++;
id=total;
=name;
篇三:java 实验5 接口多态实验报告
实验五接口、多态与内部类
实验目标:
1、理解接口、塑型、多态的概念并能熟练应用;
2、熟练掌握接口的定义和使用;
3、深刻理解构造方法的调用顺序,理解编写时需要注意的问题;
4、了解并学会使用内部类
实验任务:
1、继承时的多态:目测给出下面代码的执行输出结果,并简单解释每一行输出的原因。
答:首先,该程序的主函数是Vehicle v=new Vehicle();即先声明并实例化一个汽车对象,而v.test();则是调用汽车的尝试方法;而test方法里,Vehicle vc=new Car();是将上面的汽车指向了一个具体的小汽车对象;Bus vb=new Bus();将公共汽车指向了一个具体的公共汽车对象;drive();调用汽车的驾驶方法;vc.drive();调用小汽车的驾驶方法;vb.drive();调用公共汽车的驾驶方法;而vc.brake();vb.brake();则是直接调用汽车的刹车方法。
因而运行结
果如下:
A new bus.
Vehicle is driven
Car is driven
Bus is driven
Vehicle is braked
Vehicle is braked
2.针对下面的简单的类图,从面向对象的角度,将Instrument定义成接口,应怎样实现。
编写能完成如图功能的程序,并再编写一个简单的应用程序进行多态性尝试。
(参考例子5-9;实验4该题是要求用抽象类来实现,在此要求用接口实现,还要进行多态性尝试)说明:Instrument表示乐器、Wind表示管乐器、Percussion敲击乐器、Stringed表示弦乐器、Woodwind表示木管乐器、Brass表示铜管乐器。
要求:(1)Instrument为接口,Wind为抽象类,其他为普通类。
这里尝试的目的是:我们知道当一个普通类实现一个接口时,必须实现该接口的全部方法,但当这个类是抽象类时,我们还需要实现该接口全部方法吗?如果不需要实现?那么是否直接不理这个方法就一,还是要将这个方法在自己类内部再标记一次为抽象方法。
(听起来有点晕,尝试很简单的,有时百读不如一试)
(2)请编写尝试代码,对实现Instrument接口的各个类进行多态尝试,具体可参考课本例子。
所谓多态尝试就是向上自动塑型,以及向下动态绑定,而动态绑定的基本规则是实例方法“由下往上”寻找绑定,类方法和类属性成员“由上往下”寻找绑定。
(对其概念不清晰的请留意课本知识与课堂讲解)
该题代码如下:
package zi;
interface Instrument {
void play();
String what();
void adjust();
}
abstractclass Wind implements Instrument {
publicvoid play() {
"Wind.play()");
}
publicabstract String what() ;
publicvoid adjust() {
}
}
class Percussion implements Instrument {
publicvoid play() {
"Percussion.play()");
}
public String what() {
}
}
class Stringed implements Instrument {
publicvoid play() {
"Stringed.play()");
}
public String what() {
}
}
class Brass extends Wind {
publicvoid play() {
"Brass.play()");
}
public String what() {
return"Brass.play()"; } return"Stringed.play()"; }"Stringed.adjust()"); return"Percussion.play()"; }"Percussion.adjust()");"Wind.adjust"); publicvoid adjust() { publicvoid adjust() {
publicvoid adjust() {
"Brass.adjust()");
}
}
class Woodwind extends Wind {
publicvoid play() {
"Woodwind.play()");
}
public String what() {
}
publicclass Ex5_2 {
publicstaticvoid main(String[] args) { Instrument i2,i3,i4,i5; // i1 = new Wind(); //i1.play(); i2 = new Percussion(); i2.play(); i3 = new Stringed(); i3.play(); i4 = new Brass(); i4.play(); i5 = new Woodwind(); i5.play();} } return"Woodwind.play()";} "Woodwind.adjust()");} publicvoid adjust() {
其执行结果如下图所示:
该程序的uml图截图如下:
3.编写程序,要求如下:
(1)定义Biology(生物)、Animal(动物)和Mankind(人)3个接口;该题代码截图如下:
以下为Biology(生物)的接口:
以下为Animal(动物)的接口:
以下为Mankind(人)的接口:
此文档是由网络收集并进行重新排版整理.word可编辑版本!。