贾云鹏

第十五周作业

Cola公司的雇员分为以下若干类:(知识点:多态) [必做
题]
4.1 ColaEmployee :这是所有员工总的父类,属性:员工的
姓名,员工的生日月份。方法:getSalary(int month) 根据参数
月份来确定工资,如果该月员工过生日,则公司会额外奖励
100 元。

package JavaTest;

public class ColaEmployee {
      protected String name;
      protected int month;
      
      public ColaEmployee(){
          super();
      }
      public ColaEmployee(String name,int month){
          super();
          this.name=name;
          this.month=month;
      }
      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;
      }
}

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

package JavaTest;

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.getMonth()==month){
              return monSalary+100;
          }else{
              return monSalary;
          }
      }
}

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

package JavaTest;

public class HourlyEmployee extends ColaEmployee{
       int hourSalary;
       int hourNum;
       
       public HourlyEmployee(){
           super();
       }
       public HourlyEmployee(String name,int month,int hourSaraly,int hourNum){
           super(name,month);
           this.hourSalary=hourSaraly;
           this.hourNum=hourNum;
       }
       public double getSalary(int month){
           if(super.getMonth()>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;
               }
           }
       }
       
}

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

package JavaTest;

public class SalesEmployee     extends ColaEmployee{
       int monthSales;
       double royaltyRate;
       
       public SalesEmployee(){
           super();
       }
       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.getMonth()==month){
               return monthSales * royaltyRate + 100;
           }else{
               return monthSales * royaltyRate;
           }
           
       }
}

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

package JavaTest;

public class Company {
      public void getSalary(ColaEmployee c,int month){
          System.out.println(c.name+"在"+month+"月的月薪为"+c.getSalary(month)+"元");
          
      }

}

测试Test

package JavaTest;

public class TestCompany {
       public static void main(String[] args){
           ColaEmployee[] cel={
                   new SalariedEmployee("普通员工",6,5000),
                   new HourlyEmployee("小时工",5,20,300),
                   new SalesEmployee("销售员工",3,50000,0.3),
           };
           for(int i=0;i < cel.length;i++){
               new Company().getSalary(cel[i],10);
           }
       }
}

• 5、利用接口实现动态的创建对象[选做题]
• 5.1 创建4个类:
• 苹果
• 香蕉
• 葡萄
• 园丁
• 5.2 在三种水果的构造方法中打印一句话.
• 以苹果类为例
• class apple
• {
• public apple()
• {
• System.out.println(―创建了一个苹果类的对象‖);
}
• }
课后作业
• 类图如下:
• 5.3 要求从控制台输入一个字符串,根据字符串的
值来判断创建三种水果中哪个类的对象

接口

package Fruits;

public interface Fruits {
       
}

苹果类

package Fruits;

public class Apple implements Fruits{
     public Apple(){
         System.out.println("创建了一个苹果类的对象");
     }
}

香蕉类

package Fruits;

public class Banana implements Fruits{
       public Banana(){
           System.out.println("创建了一个香蕉类的对象");
       }
}

葡萄类

package Fruits;

public class Grape implements Fruits{
      public Grape(){
          System.out.println("创建了一个葡萄类的对象");
      }
}

园丁

package Fruits;

import java.util.Scanner;

public class Gardener {
      public static void main(String[] args){
          Gardener g=new Gardener();
          g.create();
      }
      private Fruits create(){
          Scanner input = new Scanner(System.in);
          System.out.println("请输入水果名称:");
          String name = input.next();
          Fruits a=null;
          if(name.equals("苹果")){
              a=new Apple();
          }
          else if(name.equals("香蕉")){
              a=new Banana();
          }
          else if(name.equals("葡萄")){
              a=new Grape();
          }
          else{
              System.out.println("没有这类水果");
          }
          return a;
      }
      
}

posted on 2021-06-17 23:27  贾云鹏  阅读(49)  评论(0编辑  收藏  举报

导航