java 继承之间方法的时候(计算出经理与员工之间公司差别)

本文通过一个具体的Java案例,深入浅出地介绍了如何利用类继承来实现员工与经理间的关系建模,展示了如何通过继承简化代码并减少重复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己检讨下:刚开始看这个的时候,我觉得挺简单的,但是让我自己写的时候我确实不会写,最大的缺点就是好高骛远,偷懒,基础不会就想着上天。

  希望别的朋友别要有这样的想法,再简单的例子,如果你不亲自敲下,在揣摩下,你敢说日后让你写这样的代码,你能写出来吗,我不是天才,但我坚信勤奋可以造就天才。

首先:分析下员工与经理之间的相同点,就是员工与经理都有姓名,工资和日期(其实我感觉这个日期不必要有)这个三个属性,经理比员工多的就是经理又项目奖金

   然后可以把相同的信息抽出来,实例一个Employee类 ,这个类中有L:姓名,工资和日期 这三个属性

普通员工类:

public class Employee {
  private String name;
  private double salary;
  private Date hireDay;

  public Employee(String name, double salary, int year, int month, int day) {
    this.name = name;
    this.salary = salary;
    GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
    hireDay = calendar.getTime();
  }

  public String getName() {
    return name;
  }

  public double getSalary() {
    return salary;
  }

  public Date getHireDay() {
    return hireDay;
  }

}

经理类:

在这里经理的类里边就比员工的多了一个奖金字段,其他的都一样,所以必须有一个对应Employee的构造器,并且在计算工资的时候,把奖金加上去

这个类里边没有private double salary;这个属性,是因为Manager类使用到了extends这个关键字,继承了父类的属性和方法(除了private修改之外的所有)

public class Manager extends Employee {
  public Manager(String name, double salary, int year, int month, int day) {
    super(name, salary, year, month, day);
    bonus = 0;
  }

  public double getSalary() {

    // 这里使用super.getSalart()===〉如果去掉super的话,那么会一直调用本身,直到堆栈溢出
    double baseSalary = super.getSalary();
    return baseSalary + bonus;
  }

  // 奖金
  private double bonus;

  public void setBonus(double bonus) {
    this.bonus = bonus;
  }
}

测试类:

public class ManagerTest {
  public static void main(String[] args) {
    Manager boss = new Manager("LZ", 80000, 1990, 3, 15);
    boss.setBonus(5000);
    Employee[] staff = new Employee[3];
    staff[0] = boss;
    staff[1] = new Employee("lz", 50000, 2014, 2, 23);
    staff[2] = new Employee("lb", 40000, 2014, 1, 19);
    for (Employee e : staff) {
      System.out.println("name=" + e.getName() + ",salary="
        + e.getSalary());
    }
  }
}

结果:

name=LZ,salary=85000.0
name=lz,salary=50000.0
name=lb,salary=40000.0

注:这里边也涉及到了构造器的使用,大家先记着就是子类里边必须有对应父类构造器方法的参数存在,参数个数,以及参数类型

  还有就是super的出现的时候,一般指的是调用父类的方法。

转载于:https://www.cnblogs.com/love-you-girl/p/3865634.html

工资发放系统 某公司按月给其雇员发放工资,该公司有4种雇员:  固定薪金的雇员:不管工作多长时间,总拿固定月薪;(但如果请假,要扣除相应的薪金,请假次数×每次扣除金额30)  小时工:以小时计算,加上加班费;(每月基本工作时间为160小时,其余为加班时间)  销售员:按销售收入提成计算;(每月基本销售额度为30000元,低于此额度,在月薪里扣除少于30000部分的千分之二)  带薪销售员:底薪加上销售收入提成(要求同上,若有请假,也要扣除相应的薪金) 如果雇员的生日所在的月份在本月,那么公司无条件补贴200元。 设计一工资发放系统,完成各种工资的计算,并实现以下功能: 1) 初始化系统 创建存储该公司职工信息的存储系统(Employee.dat),并进行职工信息的输入,注意:公司的职工编号由系统按顺序自动生成,并且员工号一旦分配好就不可以再修改! 第一次运行系统,根据系统提示从键盘输入员工的相应信息进行初始化操作,并保存至Employee.dat文件中。以后每次运行程序,初始化时都从文件Employee.dat中读取员工数据即可。 2) 职工信息输 要求可以输: 某类职工当月的薪水发放信息 分类输全体职工当月的薪水发放信息 某一名职工当月的薪水发放信息 格式如下: ******************************** 固定薪金职员********************************* 编号 姓名 生年月 工种 奖励薪金 固定月薪 请假天数 应扣 实发工资 是否领取 **********************************计时职员*********************************** 编号 姓名 生年月 工种 奖励薪金 工作时长 时薪 加班时长 实发工资 是否领取 **********************************普通销售员*********************************** 编号 姓名 生年月 工种 奖励薪金 销售额 提成比例 应扣 实发工资 是否领取*********************************带薪销售员************************************ 编号 姓名生年月工种奖励薪金固定月薪销售额提成比例请假天数应扣实发工资是否领取 3) 添加职工 通过键盘输入相应的职工信息,添加职工,并保存至Employee.dat文件中。 4) 删除职工 通过输入职工的工号,首先输要删除的职工相应的信息,经确认后删除,要考虑职工不存在的情况。删除后保存至Employee.dat文件中。 5) 修改信息 要求可以修改: 除编号外的所有职工信息,包括工种以及由修改工种带来的各项操作 修改某一类工种的信息,如销售人员的提成比例,统一提高0.05; 输修改前的职工信息,经确认后修改后,输修改后的职工信息,考虑职工不存在的情况,修改后保存至Employee.dat文件中。 6) 工资发放 通过输入职工号方式,输查询到的职工相应的信息,经确认发放工资,将员工是否领取工资信息设置为是(即真),考虑所要查询的职工编号不存在和已经发放过工资的情况。 7) 保存退 通过确认,保存修改的信息至文件Employee.dat中,退系统,结束运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值