1、java实验报告8实 验 报 告( 2014 / 2015学年 第2学期)课程名称JAVA程序设计实验名称 抽象类和抽象方法实验时间2015年 5月 7日指导单位 计算机学院/软件学院软件工程系指导教师 周莉学生姓名班级学号学院(系)计算机软件学院专 业计算机科学与技术实验名称抽象类和抽象方法指导教师周莉实验类型上机实验学时2实验时间2015-5-7一、 实验目的1. 掌握多态的实现2. 掌握抽象类和抽象方法的定义和使用二、实验环境(实验设备)1. 每位学生配备计算机一台2. 计算机需安装好JDK和Jcreator三、实验内容1. 首先编写一个抽象类,要求该抽象类有3个抽象方法:Public
2、abstract void f( int x);Public abstract double g(double x);Public abstract double h(double x); 然后分别给出这个抽象类的3个子类。要求:在应用程序主类中使用这些子类创建对象,再让它们的上转型对象调用方法f()、g()和h()。(1)源程序:abstract class A public abstract void f(int x); public abstract void g(int x,int y); public abstract double h(double x);class A1 exte
3、nds A public void f(int x) System.out.println(x); public void g(int x,int y) int z=x+y; System.out.println(z); public double h(double x) return x*x; class A2 extends A public void f(int x) System.out.println(Hello:+x); public void g(int x,int y) int z=x-y; System.out.println(z); public double h(doub
4、le x) return Math.sqrt(x); class A3 extends A public void f(int x) System.out.println(你好:+x); public void g(int x,int y) double z=(double)x/y; System.out.println(z); public double h(double x) return 1/x; public class ZuoYe5_2 public static void main(String args) A a=new A1(); a.f(10); a.g(12,20); Sy
5、stem.out.println(a.h(100); a=new A2(); a.f(10); a.g(12,20); System.out.println(a.h(100); a=new A3(); a.f(10); a.g(12,20); System.out.println(a.h(100); (2)实验结果:2. 设计一个人员类(Person),其中包含一个方法pay,代表人员的工资支出。再从Person类派生出助教类(Assistant)、讲师类(Instructor)、副教授类(Assistant Professor)和教授类(Professor)。其中:工资支出=基本工资+授课时
6、数*每课时兼课金。 但助教基本工资为800,每课时兼课金25,讲师基本工资为1000,每课时兼课金35,副教授基本工资为1200,每课时兼课金40,教授基本工资为1400,每课时兼课金50。 将Person定义为抽象类,pay为抽象方法,设计程序实现多态性。(1) 源程序:abstract class Person protected String name; protected double classum; public Person() this.name=; classum=0; public Person(String name,double classum) this.name=n
7、ame; this.classum=classum; abstract public double pay(); public String toString() return姓名:+this.name+t工资支出:+this.pay()+n; class Assistant extends Person public Assistant(String name,double classum) super(name,classum); public double pay() return 800+classum*25; class Instructor extends Person publi
8、c Instructor(String name,double classum) super(name,classum); public double pay() return 1000+classum*35; class AssistantProfesson extends Person public AssistantProfesson(String name,double classum) super(name,classum); public double pay() return 1200+classum*40; class Professor extends Person publ
9、ic Professor(String name,double classum) super(name,classum); public double pay() return 1400+classum*50; public class sy8_2 public static void main(String args) Person ps=new Person4; ps0=new Assistant(张三,120); ps1=new Instructor(赵二,130); ps2=new AssistantProfesson(李四,125); ps3=new Professor(王五,134
10、); String output=; for(int i=0;ips.length;i+) output+=psi; System.out.println(output); (2) 实验结果:3. 定义一个抽象类Bank,它包含有oneyearRate(定期利率)、oneyearNationaldebt(国债利率)和interestRate(活期利率)常数和count()方法及show()方法。Count()方法用于对本息合计(存款本金利息)进行计算,而show()方法用于对本息合计进行显示。由于对不同的存款方式,利率是不同的,因此此程序分别定义多个子类实现对抽象类的继承,实现对利率的计算和显
11、示。注意:本程序定义了定期利率、活期利率、国债利率三种利率,按照一万元钱位存款单位进行统计,计算每种利率下存款一年后的本息合计。除了国债外,其他利率都要交纳个人所得税20。(1) 源程序:abstract class Bank protected static final float oneyearRate=0.0178f; protected static final float oneyearNationaldebt=0.0198f; protected static final float interestRate=0.0078f; abstract void count(); abst
12、ract void show();class InterestRateCalcute extends Bank private float saving; private double sum; InterestRateCalcute(float i) saving=i;count(); public void count() sum=saving+(saving*Bank.interestRate*0.8); public void show() System.out.println(With current interest rate,sum=+sum); class OneyearNat
13、ionaldebtCalcute extends Bank private float saving; private double sum; OneyearNationaldebtCalcute(float i) saving=i;count(); public void count() sum=saving+(saving*Bank.interestRate*0.8); public void show() System.out.println(With national debt rate,sum=+sum); class OneyearRateCalcute extends Bank
14、private float saving; private double sum; OneyearRateCalcute(float i) saving=i;count(); public void count() sum=saving+(saving*Bank.oneyearRate*0.8); public void show() System.out.println(With fixed rate,sum=+sum); class Calculate public static void main(String args) int mon=10000; OneyearRateCalcut
15、e rate=new OneyearRateCalcute(mon); rate.show(); OneyearNationaldebtCalcute debt=new OneyearNationaldebtCalcute(mon); debt.show(); InterestRateCalcute interest=new InterestRateCalcute(mon); interest.show(); (2) 实验结果:四、实验小结(包括问题和解决方法、心得体会等)本次实验中,我们主要练习编译了跟抽象类有关的相关程序。其中主要包括已知抽象方法编写抽象类、抽象类抽象方法实现多态性、通过定义多个子类来实现对类的继承。由于课前试验代码老师已经给出,所以我们完成得比较顺利。通过本次实验,我基本掌握了实现多态的方法,也练习了抽象类和抽象方法的定义和使用,都掌握得比较好。以后也还需要多加练习,能更加熟悉。五、指导教师评语成 绩批阅人日 期