zoukankan      html  css  js  c++  java
  • 5.20

    4、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 Homework;
    
    public class ColaEmployee {
        String name;
        int month;
    
        public ColaEmployee() {
    
        }
    
        public ColaEmployee(String name, int month) {
            super();
            this.name = name;
            this.month = month;
        }
    
        public double getSalary(int month) {
            return 0;
        }
    }
    package Homework;
    
    public class SalariedEmployee extends ColaEmployee {
        double monSalary;
    
        public SalariedEmployee() {
            super();
        }
    
        public SalariedEmployee(String name, int month, double monSalary) {
            super(name, month);
            this.monSalary = monSalary;
        }
    
        public double getSalary(int month) {
            if (super.month == month) {
                return monSalary + 100;
            } else {
                return monSalary;
            }
    
        }
    
    }
    package Homework;
    
    public class HourlyEmployee extends ColaEmployee {
        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;
                }
            }
    
        }
    
    }
    package Homework;
    
    public class SalesEmployee extends ColaEmployee {
        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;
            }
        }
    
    }
    package Homework;
    
    public class Company {
        public void getSalary(ColaEmployee c, int month) {
            System.out.println(c.name + "在" + month + "月的月薪为" + c.getSalary(month) + "元");
        }
    }
    package Homework;
    
    public class TestCompany {
    
        public static void main(String[] args) {
            
            ColaEmployee[] cel = { new SalariedEmployee("Amy", 6, 44000), new HourlyEmployee("按小时拿工资的员工", 5, 100, 300),
                    new SalesEmployee("销售人员", 3, 7000000, 0.4) };
            for (int i = 0; i < cel.length; i++) {
                new Company().getSalary(cel[i], 8);
            }
        }
    
    }
  • 相关阅读:
    【Nginx】ngx_event_core_module模块
    ELMAH--Using HTTP Modules and Handlers to Create Pluggable ASP.NET Components 77 out of 90 rated th
    nyist oj 214 单调递增子序列(二) (动态规划经典)
    java 入门书籍(java7)
    ARCGIS将WGS84坐标投影到高斯平面
    【linux】linux下对java程序生成dump文件,并使用IBM Heap Analyzer进行分析,查找定位内存泄漏的问题代码
    【springboot】【socket】spring boot整合socket,实现服务器端两种消息推送
    【linux】linux修改open file 大小
    【docker】docker限制日志文件大小的方法+查看日志文件的方法
    【docker】docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志
  • 原文地址:https://www.cnblogs.com/xiaomoa/p/12921365.html
Copyright © 2011-2022 走看看