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

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

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

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

   然后可以把相同的信息抽出来,实例一个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