第十五周 作业

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

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

4.2 SalariedEmployee ColaEmployee 的子类,拿固定工 资的员工。属性:月薪 课后作业 

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

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

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

 ColaEmployee

package mrb;

 

public class ColaEmployee {

 protected String name;

    protected int month;

    protected int birthdayMonth;

 

    public ColaEmployee() {

        super();

    }

 

    public ColaEmployee(String name, int month, int birthdayMonth) {

        super();

        this.name = name;

        this.month = month;

        this.birthdayMonth = birthdayMonth;

    }

 

    

    

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getMonth() {

        return month;

    }

    public void setMonth(int month) {

        this.month = month;

    }

    

    

    public double getSalary(int month) {

        return 0;

    }

 

}

 

 SalariedEmployee

package mrb;

 

public class SalariedEmployee extends ColaEmployee{

    protected double money;

 

    public SalariedEmployee() {

        super();

    }

 

    public SalariedEmployee(String name, int month, int birthdayMonth,

            double money) {

        super(name, month, birthdayMonth);

        this.money = money;

    }

 

    public double  getSalary(int month){

        if (birthdayMonth==month){

            return money+100;

        }else{

            return money;

        }

    }

    

 

}

 

HourlyEmployee

package mrb;

 

public class HourlyEmployee extends ColaEmployee {

    protected double xsmoney;

    protected int hour;

    

    public HourlyEmployee() {

        super();

    }

 

    

    public HourlyEmployee(String name, int month, int birthdayMonth,

            double xsmoney, int hour) {

        super(name, month, birthdayMonth);

        this.xsmoney = xsmoney;

        this.hour = hour;

    }

 

    public double getSalary(int month){

        if(super.birthdayMonth==month){

            if(hour>160){

                return xsmoney*160+(hour-160)*xsmoney*1.5+100;

            }else{

                return xsmoney*160+100;

            }

        }else{

            if(hour>160){

                return xsmoney*160+(hour-160)*xsmoney*1.5;

            }else{

                return xsmoney*160;

            }

        }

    }

 

SalesEmployee

package mrb;

 

 

public class SalesEmployee extends ColaEmployee {

    protected int monthlySales;

    protected double commissionRate;

 

    public SalesEmployee() {

        super();

    }

 

    public SalesEmployee(String name, int month, int birthdayMonth,

            int monthlySales, double commissionRate) {

        super(name, month, birthdayMonth);

        this.monthlySales = monthlySales;

        this.commissionRate = commissionRate;

    }

 

    public double getSalary(int month) {

        if (super.birthdayMonth == month) {

            return monthlySales *(1+ commissionRate) + 100;

        } else {

            return monthlySales *(1+ commissionRate);

        }

    }

 

}

 

 

 

 

package mrb;

 

public class Company {

 public void show(ColaEmployee a,int month) {

         System.out.println(a.name +"在" + month + "月的月薪为" + a.getSalary(month));

     }

 

 

}

 

 

package mrb;

 

public class TestCompany {

  public static void main(String[] args) {

        ColaEmployee a[] = {

         new SalariedEmployee("普通员工",2,2, 3000),

         new HourlyEmployee("小时员工", 4, 3, 18, 300),

         new SalesEmployee("销售部员工", 7, 2, 2000, 0.3)};

 

        for (int i = 0; i < a.length; i++) {

            new Company().show(a[i],6);

 

        }

    }

}

 5、利用接口实现动态的创建对象[选做题

5.1 创建4个类: 苹果 香蕉 葡萄 园丁

5.2 在三种水果的构造方法中打印一句话. •

5.3 要求从控制台输入一个字符串,根据字符串的值来判断创建三种水果中哪个类的对象

以苹果类为例 • class apple •

                               { 

                                     public apple() 

                                            {  System.out.println(―创建了一个苹果类的对象‖);

                                            }

                               }

类图如下:

 

 

package mrb;

import java.util.Scanner;

public class ShuiGuo{

 

 public static void main(String[] args) {

  // TODO Auto-generated method stub

 ShuiGuo g = new ShuiGuo();

  g.creat();

 }

 public Fruit creat() {

  Fruit f= null;

  Scanner sc = new Scanner(System.in);

  String str= sc.next();

  if(str.equals("苹果")) {

   f=new Apple();

  }

  if(str.equals("梨")) {

   f=new Pear();

  }

  if(str.equals("桔子")) {

   f=new Orange();

  }

  return f;

  

 }

 

}

 

 

interface Fruit{

 

}

class Apple implements Fruit{

 Apple(){

  

  System.out.println("创建了一个苹果类的对象");

 }

}

class Pear implements Fruit{

 Pear(){

  

  System.out.println("创建了一个梨类的对象");

 }

}

class Orange implements Fruit{

 Orange(){

  

  System.out.println("创建了一个桔子类的对象");

 }

}

posted @ 2021-06-15 15:06  马瑞彬  阅读(37)  评论(0编辑  收藏  举报