首页
登录
从业资格
阅读以下说明和Java代码,填补Java代码中的空缺(1)~(6),将解答写在答
阅读以下说明和Java代码,填补Java代码中的空缺(1)~(6),将解答写在答
练习题库
2022-08-02
47
问题
阅读以下说明和Java代码,填补Java代码中的空缺(1)~(6),将解答写在答题纸的对应栏内。【说明】已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按52周计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。下面是实现该工资系统的Java代码,其中定义了四个类:工资系统类PayRoll,员工类Employee,正式工类Salaried和计时工类Hourly,Salaried和Hourly是Employee的子类。【Java代码】abstract class Employee { protected String name; //员工姓名 protected int empCode; //员工号 protected double salary; //周发放工资 public Employee(int empCode, String name) { this.empCode=empCode; this.name=name, } public double getSalary(){ return this.salary; }public abstract void pay() ;}class Salaried (1) Employee { private double annualSalary; Salaried(int empCode, String name, double payRate) { super(empCode, name) ; this.annualSalary=payRate; } public void pay () { salary= (2) ; //计算正式员工的周发放工资数 System.out.println(this.name+":"+this.salary); }}class Hourly (3) Employee { private double hourlyPayRate; private int hours; Hourly(int empCode, String name, int hours, double payRate) { super(empCode, name); this.hourlyPayRate=payRate; this.hours=hours; } public void pay () { salary= (4) ; //计算计时工的周发放工资数 System.out.println(thisname+":"+this.salary); }}public class PayRoll { private (5) employees[]={ new Salaried(1001, "Zhang San", 58000.00),//此处省略对其他职工对象的生成 new Hourly(1005, "Li", 12, 50.00) }; public void pay(Employee e[]) { for (int i=0; i<e.length; i++) { e
pay(); } } public static void main(String[] args) { PayRoll payRoll=new PayRoll(); payRoll.pay( (6) ); double total=0.0; for (int i=0;i<payRoll.employees.length; i++){ //统计周发放工资总额 total+=payRoll.employees
.getSalary(); }System.out.println(total); }}
选项
答案
解析
(1)extends
(2)annualSalary/52
(3)extends
(4)hourlyPayRate * hours
(5)Employee 或 static Employee
(6)employees(空(5)只能为static Employee)或payRoll.employees
本题考查Java语言程序设计能力,涉及类和抽象类、对象、方法及抽象方法的定义和相关操作,以及继承关系和多态。要求考生根据给出的案例和执行过程说明,认真阅读理清程序思路,然后完成题目。
根据本题中说明中描述,需要记录每名员工的员工号、姓名和工资等信息。公司员工分为正式工和计时工两类,正式工和计时工的工资支付方式不同,根据面向对象设计的概念,这两种员工都是员工,设计时将公有属性和行为封装成抽象类,并使用继承关系设计两种不同员工类作为子类。因此,系统设计了四个类:工资系统类PayRoll,员工类Employee,正式工类Salaried和计时工类Hourly,Salaried和Hourly继承了Employee类。Employee中定义两类员工公有属性和方法,以及支付方式的接口标识,Salaried和Hourly需要在各自的类中有具体支付方式的实现。
根据类定义及其之间的关系,将Employee类定义为抽象类,其中支付工资定义为抽象方法,public abstract void pay();,这样就定义了支付方式的接口,子类中必须实现各自具体的支付方法。这样,在PayRoll中对Salaried和Hourly两类的对象使用同样的调用方式e
.pay()达到不同支付效果,也就达到了多态。Salaried和Hourly均继承了Employee,其语法为extends后加类名,在两者的构造方法中调用父类的构造方法,进行相应的员工公共信息初始化操作,所以均在构造方法的第一句(必须是第一句)采用super调用父类构造方法。Salaried的工资发放方式为“按年薪分周发放(每年按52周计算)”,因此在pay()方法的实现中,每周发放工资采用“年薪/52”进行计算。Hourly的工资发放方式是“以小时工资为基准,按每周工作小时数核算发放”,即“小时工资×周工作小时”进行计算。
在PayRoII中创建了一组员工,用数组存储,由于数组元素包括Salaried和Hourly两种,因此其声明类型采用父类类型Employee,可以定义为静态数组,对象的创建采用new关键字加类名。在PayRoll中支付时,集中对所有负工进行支付,将数据作为payRoll的pay()的参数,在Java中用数组引用名直接作为参数,即payRoll.pay(payRoll.employees)。
因此空(1)和(3)处添加继承父类,即extends。空(2)和(4)处补充通过使用计算得到所发放的工资数,空(2)处为计算正式员工的周发放工资数,即annuaISalary/52;空(4)处为计时工的周发放工资数,即hourlyPayRate*hours。空(5)处定义员工数组的类型,即Employee或static Employee。空(6)处将员工数组的引用传递给pay()方法,即employees(空(5)只能为static Employee)或payRoll.employees。
转载请注明原文地址:https://tihaiku.com/congyezige/2427496.html
本试题收录于:
初级程序员题库软件水平考试初中高级分类
初级程序员
软件水平考试初中高级
相关试题推荐
根据《建筑工程设计信息模型分类和编码标准》,建筑信息模型分类表代码应采用()数字
解答服务对象的健康问题,帮助其澄清观念、做出决策的人际传播形式称为A.咨询B.个
IE浏览器能够正确解析()代码。A.ASP B.HTML C.JSP D
网页中代码"inputtype=textname="foo"size=20
在网页中创建一个如下图所示的表单控件的HTML代码是()。 A.<input
下面的XML代码段中,语法正确的是()。A.<!-xml示例-!><?xml
在网页中创建Email链接,代码正确的是()。A.<ahref=“call
下列设置图像地图正确的HTML代码是()。A.<areashape="po
阅读一下说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】
阅读以下说明,回答问题1至问题4,将解答填入对应的解答栏内。 【说明】
随机试题
Whatistheminimumnumberofmatchesyoucanremovefromthisdiagramtoleave
Theplaceofthechildinsocietyhasvariedforthousandsofyearsandhas
Backintheday,agoodreportcardearnedyouaparentalpatontheback,b
Thegreenhouseeffectcausestroublebyraisingthetemperatureoftheplane
下列双代号网络图中,关键工作有( )。 A.工作B B.工作A C.工作
如所示,对图(a)所示的S影响线,对图(b)的荷载分布,其S值为( )kN·m
胆脂瘤型慢性化脓性中耳炎的描述错误的是A.治疗原则首选手术 B.鼓膜紧张部可无
有限责任公司召开股东会会议,应当于会议召开()日前通知全体股东,公司章程另有规
青霉素的抗菌作用机制是A.干扰细菌蛋白合成 B.抑制细菌的酶活性 C.抑制细
案例五 背景资料 某施工单位承建了一段二级公路沥青混凝土路面工程,路基宽度1
最新回复
(
0
)