问答题 [说明] 本程序的功能是给公司的员工Tom,Jack,Green增加薪水。三人的职位分别是programmer, Manager,CEO。 程序由6个类组成:WorkerTest是主类,programmer,Manager,CEO三个类,薪水增加的规则是 programmer的涨幅是5%;Manager的是10%;CEO也是Manager,但是它除了有Manager的涨幅,还有1000元的bonus。接口SalaryRaise提供了一个增加薪水的方法raise()。 [java程序] public class WorkerTest { public WorkerTest( ) {} public static void main( String[] args) { Programmer programmer = new Programmer( "Tom" ,3000); Manager manager = new Manager( "Jack" ,4000); CEO ceo = new CEO( "Green" ,4000); Worker [] worker = new Worker[3]; programmer, raise( ); manager, raise( ); ceo. raise( ); worker[0] = programmer; worker [1] = manager; worker[2] = ceo; for ( int i = 0 ;i < worker, length; i + + ) { System. out. prinfln (" Name:" + worker [i]. getName ( ) +" / tSalary:" + worker [i]. getSalary ()); public interface SalaryRaise { void raise( ); } public class Worker { public String name; public double{{U}} (1) {{/U}}; public Worker( ) {} public String getName( ) {return name;} public void setName( String name) {this. name = name;} public double getSalary( ) {return salary;} public void setSalary(double salary) { this. salary = salary; } } public class Programmer extends Worker implements{{U}} (2) {{/U}}{ public Programmer( ) {} public void raise( ) { double pets=0.05; double sala = this. getSalary( ) * (1 + pers); this. setSalary (sala); public Programmer( Siring name, double salary) t this. name = name; this. salary = salary; public class Manager extends{{U}} (3) {{/U}}implements SalaryRaise { public Manager( ) { } public Manager(String name, double salary) { this. name = name; this. salary = salary; } public void raise( ) { double pets = 0.1; double sala = this. getSalary() * (1 + pers); this. setSalary(sala); } } public class CEO extends Manager implements SalaryRaise { public CEO() {} public CEO( String name,double salary) { this. name = name; this. salary = salary; } public void raise( ) { double bonus = 1000; {{U}}(4) {{/U}}; double sala = this. getSalary( ); {{U}} (5) {{/U}}; this. setSalary(sala); } }
【正确答案】
【答案解析】(1)salary (2)SalaryRalse (3)Worker (4) super. raise() (5)sala+=bonus及其等效形式 (1)从Worker这个类的结构来看,它有两个属性ufinle和salary,因此这里应该填salary; (2)~(3):很显然Programmer类和Manager类继承于 Worker类和SalaryRaise接口。 (4)~(5):CEO类继承于Manager类,而根据题意, CEO除了有Managor的涨幅,还有1000元的bonus。所以,CEO薪水的涨幅可以使用基类相同的方法super. raise(),然后再加上奖金sala+=bonus即可。