《Java程序设计》上机实验报告实验三面向对象程序设计的继承、多态等特性的练习.doc_第1页
《Java程序设计》上机实验报告实验三面向对象程序设计的继承、多态等特性的练习.doc_第2页
《Java程序设计》上机实验报告实验三面向对象程序设计的继承、多态等特性的练习.doc_第3页
《Java程序设计》上机实验报告实验三面向对象程序设计的继承、多态等特性的练习.doc_第4页
《Java程序设计》上机实验报告实验三面向对象程序设计的继承、多态等特性的练习.doc_第5页
免费预览已结束,剩余4页可下载查看

下载本文档

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

文档简介

信息科学与工程学院 Java程序设计 上机实验报告专业班级 姓 名 学 号 实验时间 指导教师 成 绩 实验名称实验三 面向对象程序设计的继承、多态等特性的练习实验目的1) 掌握类的继承机制。2) 熟悉类中成员变量和方法的访问控制。3) 熟悉方法或构造方法多态性。4) 熟悉接口的定义方法。主 要 实 验 记 录 及 个 人 小 结 (包括部分实验源程序、调试结果及实验结果分析等)1. 编写程序实现如下功能:已知Person类包含三个公共域变量(姓名、性别、年龄)和一个构造方法,Student类是Person类的派生类,包含两个新的公共域变量(学号、班号)、两个公共方法(修改年龄、显示基本信息)及一个构造方法。定义一组学生对象,并初始化他们的基本信息,然后依次输出。1) 实验源程序:class Person public String name;public String sex;int age;Person(String name,String sex,int age)=name; this.sex=sex; this.age=age;class Student extends Personpublic String sno;public String classno;public void updateAge(int age)this.age=age;主 要 实 验 记 录 及 个 人 小 结 (包括部分实验源程序、调试结果及实验结果分析等)Student(String name,String sex,int age,String sno,String classno)super(name,sex,age); this.sno=sno; this.classno=classno; public String toString() return(姓名:+name+ 性别:+sex + 年龄:+age+ 学号:+sno+ 班号:+classno+ ); public class TestStudentPerson public static void main(String args)int i;Student stu=new Student3;stu1=new Student(小明,男,20,200912135138,2班);stu2=new Student(小木,女,23,200912135136,5班);stu 1.updateAge(25); stu 2.updateAge(26); for(i=1;i3;i+) System.out.println(stui); 2)调试结果:主 要 实 验 记 录 及 个 人 小 结 (包括部分实验源程序、调试结果及实验结果分析等)2. 输入课本例5-4的源程序,观察其运行结果,然后将Shape类分别定义为一个抽象类和接口,然后将源程序进行修改,让其实现相同功能。1)public class TestVirtualInvoke static void doStuff(Shape s) s.draw(); public static void main(String args) Circle c=new Circle(); Triangle t=new Triangle(); Line l=new Line(); doStuff(c); /作为实参,调用对象是3个类对象,上溯造型使其隐藏. doStuff(t); doStuff(l); class Shapevoid draw()System.out.println(Shape Drawing);class Circle extends Shapevoid draw()System.out.println(Draw Circle);class Triangle extends Shapevoid draw()System.out.println(Draw Three Triangle);class Line extends Shapevoid draw()System.out.println(Draw Line);主 要 实 验 记 录 及 个 人 小 结 (包括部分实验源程序、调试结果及实验结果分析等)调试结果:2)将Shape类定义为abstact class Shapepublic class TestVirtualInvoke static void doStuff(Shape s) s.draw(); public static void main(String args) Circle c=new Circle(); Triangle t=new Triangle(); Line l=new Line(); doStuff(c); /作为实参,调用对象是3个类对象,上溯造型使其隐藏. doStuff(t); doStuff(l); abstract class Shape abstract void draw();class Circle extends Shapevoid draw()System.out.println(Draw Circle); /定义Shape抽象类的派生类Circleclass Triangle extends Shapevoid draw()System.out.println(Draw Three Triangle);/定义Shape抽象类的派生类Triangleclass Line extends Shapevoid draw()System.out.println(Draw Line); /定义Shape抽象类的派生类Line 主 要 实 验 记 录 及 个 人 小 结 (包括部分实验源程序、调试结果及实验结果分析等)调试结果:3) 将Shape定义为interface Shapepublic class TestVirtualInvoke static void doStuff(Shape s) s.draw(); public static void main(String args) Circle c=new Circle(); Triangle t=new Triangle(); Line l=new Line(); doStuff(c); /作为实参,调用对象是3个类对象,上溯造型使其隐藏. doStuff(t); doStuff(l); interface Shape public void draw(); /定义一个Shape接口 class Circle implements Shape publicvoid draw()System.out.println(Draw Circle); /基于Shape接口利用implements实现类Circle class Triangle implements Shape public void draw()System.out.println(Draw Three Triangle); class Line implements Shape publicvoid draw()System.out.println(Draw Line);调试结果:3.思考题:某小型公司,主要有三类人员:经理、兼职技术人员和兼职推销员。这三类人员共同拥有的相关属性:姓名、编号; 相关方法:获取当月薪水的getPay()方法、显示个人信息的toString()方法。人员编号基数为1000,每创建一个人员实例对象,其编号属性的值顺序加1。月薪计算方法:经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;兼职推销人员的月薪按当月的销售额的4%提成。要求:根据题意,自己确定需要定义的类及各类的属性、构造方法和其他方法,并编写Java Applcation程序实现功能:存储若干个职工信息,然后分行显示所有职工的姓名、编号、月工资等相关信息,另外计算所有职工的月薪总和并显示出来。 abstract class StaffInf String name;int no;static int num=1000; abstract double getPay(); StaffInf(String name) =name; num=num+1; class Manager extends StaffInf double pay=8000.0;double getPay()return 8000.0; Manager(String name)super(name); no=num; public void toStrings() System.out.println(姓名:+name+ 编号:+no+ 月薪水:+pay);class Tech extends StaffInf long workHours; double getPay()return workHours*100; Tech(String name, long workHours)super(name); no=num; this.workHours=workHours; public void toStrings()System.out.println(姓名:+name+ 编号:+no+ 月薪水:+getPay();class Sale extends StaffInf long saleNum; double getPay()return saleNum*0.4;Sale(String name,long saleNum)super(name); no=num; this.saleNum=saleNum; public void toStrings()System.out.println (姓名:+name+ 编号:+no+ 月薪水:+getPay(); public class Staff public static void main(String args)int i=0;double numPay = 0;Manager mana=new Manager10;mana0=new Manager(小明);mana1=new Manager(小木);for(i=0;i2;i+) manai.toStrings();Tech tech=new Tech10;tech0=new Tech(小凯,80);tech1=new Tech(小天,90);for(i=0;i2;i+)techi.getPay(); techi.toStrings();Sale sal=new Sale10;sal0=new Sale(小家,12300);sal1=new Sale(小南,25000);for(i=0;i2;i+)sali.getPay(); sali.toStrings();for(i=0;i2;i+) numPay+= manai.getPay()+techi.getPay()+sali.getPay();System.out.println(月薪总和:+numPay);2)调试结果:主要问题的出错现象:1) 调用类的方法时候,输入实参出现错误2) 源程序编写完成后出现error的提示.出错原因:1) 实参与形参的类型和数量没有一一对应,因而出现错误.2)没有注意的匹配问题.解决方法及效果:1) 编写和调用类的方法时,注意参数的类型和数量的对应.2) 写类和方法的时候注意要使得匹配.用将类和方法正确划分即可.实验小结:1) 注意类的方法的编写时,实参与形参的一一对应关系.2) 编译class文件时一定注意文件名称的对应和大小写.类名是首写字母大写,变量名首字母小写,方法名第一个小写第二个大写.3) 使用MyEclipse定义类时,记住首先创建一个 project 工程 例如java project ,进行统一的管理, 因为类都

温馨提示

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

评论

0/150

提交评论