继承的规则:is-a,Manager is a Employee,经理是一个雇员。
先构造父类Employee.java
package inheritance;
import java.util.Date;
import java.util.GregorianCalendar;
public class Employee {
private String name;
private double salary;
private Date hireDay;
public Employee(String n, double s, int year, int month, int day){
name = n;
salary = s;
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;
}
public void raiseSalary(double byPercent){
double raise = salary*byPercent / 100;
salary += raise;
}
}
再构造子类Manager.java
package inheritance;
public class Manager extends Employee {
private double bonus;
/*param n the employee's name
* param s the salary
* param year the hire year
* param month the hire month
* param day the hire day
* */
public Manager(String n, double s, int year, int month, int day){
super(n, s, year, month, day);
bonus = 0;
}
public double getSalary(){
double baseSalary = super.getSalary();
return baseSalary + bonus;
}
public void setBonus(double b){
bonus = b;
}
}
测试ManagerTest.java
package inheritance;
//This program demonstrates inheritance.
public class ManagerTest {
public static void main(String[] args){
//construct a Manager object
Manager boss = new Manager("Carl", 80000, 1987, 12, 15);
boss.setBonus(5000);
//fill the staff array with Manager and Employee objects
Employee[] staff = new Employee[3];
staff[0] = boss;
staff[1] = new Employee("Hacker", 50000, 1989, 10, 1);
staff[2] = new Employee("Tomy", 40000, 1990, 3, 15);
//print out information about all Employee objects
for(Employee e : staff){
System.out.println("name="+e.getName()+",salary="+e.getSalary());
}
}
}
输出结果
name=Carl,salary=85000.0
name=Hacker,salary=50000.0
name=Tomy,salary=40000.0
name=Hacker,salary=50000.0
name=Tomy,salary=40000.0