实验四 面向对象高级技术
更新时间:2023-10-11 17:24:01 阅读量: 综合文库 文档下载
- 实验四小推荐度:
- 相关推荐
实验四
一、有一个abstract类,类名为Employee,其子类有YearWorker、MonthWorker、WeekWorker。YearWorker对象按年领取薪水,MonthWorker按月领取薪水、WeekWorker按周领取薪水。Employee类有一个abstract方法:public abstract earnings();子类必须重写父类的earnings()方法,给出各自领取报酬的具体方式。
有一个Company类,该类用Employee数组作为成员,Employee数组的单元可以是YearWorker对象的上转型对象、MonthWorker对象的上转型对象或WeekWorker对象的上转型对象。程序能输出Company对象一年需要支付的薪水总额。 程序模板
按模板要求,将[代码]处替换为Java程序代码。 HardWork.java
abstract class Employee { public abstract double earnings(); }
class YearWorker extends Employee { [代码1] //重写earnings()方法 }
class MonthWorker extends Employee { [代码2] //重写earnings()方法 }
class WeekWorker extends Employee { [代码3] //重写earnings()方法 }
class Company { Employee[] employee; double salaries=0;
Company(Employee[] employee) { this.employee=employee; }
public double salariesPay() { salaries=0;
[代码4] //计算salaries return salaries; } }
public class HardWork {
public static void main(String[] args) { Employee[] employee=new Employee[20]; for(int i=0;i employee[i]=new WeekWorker(); else if(i%3==1) employee[i]=new MonthWorker(); else if(i%3==2) employee[i]=new YearWorker(); } Company company=new Company(employee); System.out.println(\公司年工资总额:\ } } 二、运行下面的程序,理解成员变量的继承与隐藏。 import java.io.*; class sum_3{ int sum,num1,num2; static int num3; //定义构造函数初始化对象 sum_3(){ num1=0; num2=0; num3=0; sum=0; } } class sub_sum3 extends sum_3{ int sum,num1,num2; //隐藏父类sum_3中的实例变量 static int num3; //隐藏父类sum_3中的类变量 void sum(int i,int j,int k){ num1=i; num2=j; num3=k; sum=num1+num2+num3; } } public class computing{ public static void main (String arg[]){ sub_sum3 m1=new sub_sum3(); m1.sum(100,200,300); System.out.println(\ } } 三、运行下面的程序,理解方法的继承。 class Sort3{ double max1,max2,max3; Sort3(){ max1=-1; max2=-1; max3=-1; } void sort(){ double s; if (max1 if (max1 if (max2 class sub_Sort3 extends Sort3{ void subsort(double i,double j,double k){ max1=i; max2=j; max3=k; sort(); //调用父类中的方法sort() } } public class Class1{ public static void main (String args[]){ sub_Sort3 m1 = new sub_Sort3(); m1.subsort(100,200,300); System.out.println(\三个数从大到小为:\ } } 四、运行下面的程序,理解方法的重载。 class Sort2or3{ double max1,max2,max3; Sort2or3(){ max1=-1; max2=-1; max3=-1; } void sort(double i,double j){ double s; max1=i; max2=j; if(max1 } } void sort(double i,double j,double k){ double s; max1=i; max2=j; max3=k; if (max1 if (max1 if (max2 public class Class1{ public static void main (String args[]){ Sort2or3 m1 = new Sort2or3(); m1.sort(100,200); System.out.println(\两个数从大到小为:\ m1.sort(50,150,100); System.out.println(\三个数从大到小为:\ } } 五、运行下面的程序,理解方法的覆盖。 class sort_Demo{ int i,j,k,swap; sort_Demo(){ i=j=k=swap=0; } void sort(int t1,int t2[]){ //父类中的方法用来实现升序 //用选择法按升序排列 for(i=0;i for(j=i+1;j } } } class sub_sort_Demo extends sort_Demo{ void sort(int t1,int t2[]){ //子类中的方法实现降序 //用选择法实现降序排列 for(i=0;i for(j=i+1;j t2[k]=swap; } } } } public class Class1{ public static void main (String args[]){ int a[]={34,12,8,67,88,23,98,101,119,56}; sort_Demo m1=new sort_Demo(); sub_sort_Demo m2=new sub_sort_Demo(); System.out.println(\排序前的数据为:\ for (int i=0;i<10;i++) System.out.print(\\ //调用父类中的sotr()方法 m1.sort(a.length ,a); System.out.println(\按升序排列的数据为:\ for (int i=0;i<10;i++) System.out.print(\\ //调用子类中的sort()方法,该方法实现了对父类中方法的覆盖 m2.sort(a.length ,a); System.out.println(\按降序排列的数据为:\ for (int i=0;i<10;i++) System.out.print(\\} } 六、编程 1、编写Manager类,该类继承于本章中的Employee类(参照后面附注) (1)为其添加: 两个属性:办公室officeID和年终分红bonus; 1构造器方法:带有4个参数的构造器方法,用于对除bonus属性外的所有其它属性进行初始化; 方法:officeID属性和bonus属性的相关set和get方法; (2)重写Employee类中的方法raiseSalary(double proportion),经理涨工资的计算方法为在雇员工资涨幅的基础上增加10%的比例。 2、编写TemporaryEmployee(临时工)类,该类继承于Employee类 (1)为其添加: 1个属性:雇佣年限hireYears; 构造器方法:用于初始化该类的所有属性; 方法:hireYears属性的set和get方法; (2)重写Employee类中的方法raiseSalary(double proportion),临时工的工资涨幅为正式雇员的50%。 3、编写题1和题2的测试程序 (1)创建一个长度为3的Employee类型的对象数组,数组元素分别为Employee对象、Manager对象和TemporaryEmployee对象; (2)为所有雇员涨一次工资,涨幅为10%; (3)输出所有雇员的信息; 七、编程 1、编写一个Animal类,包含: 属性:private String type; //动物的类型 构造器: //用于初始化私有属性type 方法:public String toString( ) //返回动物类型的信息 public void sound( ) //输出动物的叫声信息 2、编写一个Flyable接口,包含: 方法:double flySpeed(); //用于返回最大的飞行速度 3、编写Glede(老鹰)类和Pigeon(鸽子)类,分别继承题4中的Animal类并实现题5中的Flyable接口; 4、编写测试类,打印输出老鹰和鸽子的叫声信息和最大飞行速度。 附注: class Employee { String name; char sex; int age; double Salary; String department; //此处自己添加构造方法对几个属性作初始化 double raiseSalary(double proportion) {return Salary=Salary*(1+ proportion);} //此处添加你认为需要的方法,如输出雇员的信息的方法。 }
正在阅读:
实验四 面向对象高级技术10-11
西电软件学院c++上机实验报告06-08
春蚕作文500字07-01
口笔译分类词汇大全10-08
易制毒化学品安全培训试卷+答案08-26
C语言课程设计成绩管理系统代码03-29
护理科学研究复习题及参考答案08-29
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 高级技术
- 面向
- 对象
- 实验