• 第十一周作业


    Cola公司的雇员分为以下若干类:(知识点:多态)

    (1) ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100 元。

    (2) SalariedEmployee :ColaEmployee 的子类,拿固定工资的员工。属性:月薪

    (3) HourlyEmployee :ColaEmployee 的子类,按小时拿工资的员工,每月工作超出160 小时的部分按照1.5 倍工资发放。属性:每小时的工资、每月工作的小时数

    (4) SalesEmployee :ColaEmployee 的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率

    (5) 定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类TestCompany,在main方法,把若干各种类型的员工放在一个ColaEmployee 数组里,并单元出数组中每个员工当月的工资。

    package cola;
    
    public class ColaEmployee {
        String name;
        int  month ;
        int  day ;
        int  year;
        public ColaEmployee() {
            
        }
    
        public ColaEmployee(String name, int month, int day, int year) {
            this.name = name;
            this.month = month;
            this.day = day;
            this.year = year;
        }
    
        abstract double getSalary(int month);
        
    
    }
    package cola;
    
    public class ColaEmployee{
        double salary;
    
        public SalariedEmployee() {
            
        }
        public SalariedEmployee(String name, int month, int day, 
    int year,double salary) {
            super(name, month, day, year);
            this.salary=salary;
        }
        @Override
        double getSalary(int month) {
            if(month==this.month) {
                salary+=100;
            }
            return salary;
        }
    
    }
    public class HourlyEmployee extends ColaEployee {
        private int hourSalary;
        private int hourNum;
    
        public HourlyEmployee(String name, int month, int hourSalary, int hourNum) {
            super(name, month);
            this.hourSalary = hourSalary;
            this.hourNum = hourNum;
    
        }
    
        public double getSalary(int month) {
            if (super.month == month) {
                if (hourNum > 160) {
                    return hourSalary * 160 + hourSalary * (hourNum - 160) * 1.5 + 100;
                } else {
                    return hourSalary * hourNum + 100;
                }
            } else {
                if (hourNum > 160) {
                    return hourSalary * 160 + hourSalary * (hourNum - 160) * 1.5;
                } else {
                    return hourSalary * hourNum;
                }
            }
    
        }
    }
    public class SalesEmployee extends ColaEployee {
        private int monthSales;
        private double royaltyRate;
    
        public SalesEmployee(String name, int month, int monthSales, double royaltyRate) {
            super(name, month);
            this.monthSales = monthSales;
            this.royaltyRate = royaltyRate;
        }
    
        public double getSalary(int month) {
            if (super.month == month) {
                return monthSales * royaltyRate + 100;
            } else {
                return monthSales * royaltyRate;
            }
        }
    }
    public class Company {
    
    
        public void getSalary(ColaEployee c, int month) {
            System.out.println(c.name + "" + month + "月的月薪为" + c.getSalary(month) + "");
        }
    }
    
    
    
     
  • 相关阅读:
    写在“开张”时
    上班真累
    版本控制
    电脑主板报警声音的故障现象对照表
    js页面打开倒计时
    js中的词法分析
    修改mysql数据库密码
    上班的感受
    能力是被逼出来的!!有压力才有动力
    js中绑定事件的三种方式
  • 原文地址:https://www.cnblogs.com/iM59/p/12918630.html
Copyright © 2020-2023  润新知