7-2 员工类 (40 分)

7-2 员工类 (40 分)

假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资(都是整数): (1)经理(Manager)——每月获得一份固定的工资 (2)销售人员(Salesman)——在基本工资的基础上每月还有销售提成 (3)一般工人(Worker)——则按他每月工作的天数计算工资 在Employee中提供函数getSalary()计算每个雇员一个月的工资,并在子类中重写。

在main函数中构造Employee的三个变量,分别指向Manager、Salesman、Worker的对象,调用getSalary函数,输出三个对象的工资

输入格式:

经理的月工资 销售人员的基本工资 销售人员的提成 工人的工作天数 工人每天的工资

输出格式:

经理的工资 销售人员的工资 工人的工资

输入样例:

在这里给出一组输入。例如:

12000
3000 5000
22 200

输出样例:

在这里给出相应的输出。例如:

12000
8000
4400

代码

import java.util.Scanner;

class Employee {
    public int salary;

    public Employee() {
        this.salary = 0;
    }

    public Employee(int salary) {
        this.salary = salary;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }
}

class Manager extends Employee {
    public int salary;

    public Manager(int salary) {
        this.salary = salary;
    }

    @Override
    public int getSalary() {
        return salary;
    }

    @Override
    public void setSalary(int salary) {
        this.salary = salary;
    }
}

class Salesman extends Employee {
    public int salary;
    public int commission;

    public Salesman(int salary, int commission) {
        this.salary = salary;
        this.commission = commission;
    }

    @Override
    public int getSalary() {
        return salary + commission;
    }

    public void setSalary(int salary, int commission) {
        this.salary = salary;
        this.commission = commission;
    }

}

class Worker extends Employee {

    public int day;
    public int daySalary;

    public Worker(int day, int daySalary) {
        this.day = day;
        this.daySalary = daySalary;
    }

    public int getSalary() {
        return daySalary * day;
    }

    public void setSalary(int day, int daySalary) {
        this.day = day;
        this.daySalary = daySalary;

    }
}

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int ms = scanner.nextInt();
        int ss = scanner.nextInt(), sc = scanner.nextInt();
        int wd = scanner.nextInt(), wds = scanner.nextInt();

        Manager m = new Manager(ms);
        Salesman s = new Salesman(ss, sc);
        Worker w = new Worker(wd, wds);

        System.out.println(m.getSalary());
        System.out.println(s.getSalary());
        System.out.println(w.getSalary());
    }
}

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 7-2 Employee的层级结构如下: Employee(员工是一个基,它有两个派生:HourlyEmployee(小时工)和SalariedEmployee(月薪员工)。HourlyEmployee和SalariedEmployee都继承了Employee的属性和方法,并且它们各自有自己的属性和方法。 HourlyEmployee表示按小时计算工资的员工,它有一个属性hourlyWage(每小时工资)和一个属性hoursWorked(工作小时数)。它还有一个方法calculatePay(计算工资),用于计算员工的工资。 SalariedEmployee表示按月薪计算工资的员工,它有一个属性annualSalary(年薪)和一个属性bonus(奖金)。它还有一个方法calculatePay(计算工资),用于计算员工的工资。 这个层级结构可以更进一步扩展,例如可以再创建一个派生CommissionedEmployee(按销售提成计算工资的员工),它有一个属性commissionRate(提成比例)和一个属性sales(销售额)。它也有一个方法calculatePay(计算工资),用于计算员工的工资。 ### 回答2: 7-2 employee的层级结构是指根据员工的属性和职位不同,将employee为不同的子,形成一个的层级结构。这个层级结构可以用继承来实现,将所有子都继承自employee。 在这个层级结构中,employee是基,所有的子都从基继承而来,并且每个子都可以加入自己的属性和方法。比如,manager可以增加管理几个部门的属性和方法,director可以增加制定公司战略的属性和方法等等。 在employee的层级结构中,常见的子有manager、director、software engineer、salesman、marketing等等。这些子可以互相继承,构成一个完整的层级结构。 在这个层级结构中,每个子都可以有自己的特点和属性,就像manager可以管理多个部门,director可以制定公司战略一样。这样设计的好处就是,不同型的员工有不同的属性和方法,可以方便地管理和使用。 总而言之,7-2 employee的层级结构是将所有员工按照职位和属性的不同,划到不同的子中,形成一个的层级结构。这个层级结构可以用继承来实现,让每个子都可以拥有自己的特点和属性,以方便管理和使用。 ### 回答3: 7-2 employee的层级结构包括Employee、SalariedEmployee、CommissionEmployee和BasePlusCommissionEmployee四个。 Employee是其他三个子的父,主要包含了员工的基本信息,包括姓名、社保号码和工资信息等。同时,这个中还包含了抽象的earnings方法,用于计算员工的薪水。 SalariedEmployee是根据固定薪水计算员工工资的一种型,继承于Employee。在SalariedEmployee中,需要设置员工的周薪salary,同时重写父的earnings方法以计算员工的薪水。因为SalariedEmployee不需要考虑销售业绩和底薪的影响,所以该只需要实现一个构造方法即可。 CommissionEmployee是以销售额为基础计算员工工资的一种型,同样继承于Employee。在这个中,需要设置员工的销售额grossSales和佣金比例commissionRate,并重写父的earnings方法以计算员工的薪水。因为CommissionEmployee的薪水与销售业绩紧密相关,所以该需要实现一个带参数的构造方法以便于设置员工的销售额和佣金比例。 BasePlusCommissionEmployee是在CommissionEmployee的基础上增加了底薪计算,同样继承于Employee。在这个中,除了需要设置员工的销售额和佣金比例之外,还需要设置员工的底薪baseSalary,并重写父的earnings方法以计算员工的薪水。因为BasePlusCommissionEmployee需要考虑底薪的影响,所以该同样需要实现一个带参数的构造方法以便于设置员工的销售额、佣金比例和底薪。 总体来说,Employee的层级结构体现了面向对象编程中的继承概念,通过不同的子实现不同计算薪水的方式,从而可扩展度更高、代码更加灵活易读。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值