package org.pcl.shili.jicheng;
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
* 继承的基本演示
* @author yifan
* @version 1.1 2014-05-14
*
* 1.演示了一个类如何继承另一个类: 使用extends关键字
* 2.演示了super关键字的两个用法, 一个是调用构造器另一个调用父类方法
* 3.演示了子类中使用父类的私有成员的方式:使用父类共有的方法
* 4.对于成员是类类型,并且该类型具有修改其自身的方法时的使用方式见getHireDate方法
* 5.演示了多态和动态绑定
*/
public class ManagerTest {
public static void main(String[] args) {
Employee[] employees = new Employee[3];
employees[0] = new Manager("管理员", 8000, 2000, 12, 13, 10000); // 多态哦
employees[1] = new Employee("员工1", 6000, 2008, 8, 8);
employees[2] = new Employee("员工2", 3000, 2014, 5, 15);
// 循环输出所有的职员信息
for(Employee e : employees) {
String name = e.getName();
double salary = e.getSalary(); // 动态绑定
GregorianCalendar hireDate = e.getHireDate();
System.out.printf("员工姓名:%s, 员工工资:%.2f, 员工入职时间:%d年%d月%d日\n", name, salary, hireDate.get(Calendar.YEAR), hireDate.get(Calendar.MONTH)+1, hireDate.get(Calendar.DAY_OF_MONTH));
}
}
}
/**
* 普通职员类
* @author yifan
* @version 1.1 2014-05-14
*/
class Employee {
/**
* 构建一个新的职员
* @param name 姓名
* @param salary 工资
* @param year 入职年
* @param month 入职月
* @param day 入职日
*/
public Employee(String sName, double dSalary, int iYear, int iMonth, int iDay) {
this.name = sName;
this.salary = dSalary;
this.hireDate = new GregorianCalendar(iYear, iMonth-1, iDay);
}
/**
* 获取职员姓名
* @return 职员的姓名
*/
public String getName() {
return this.name;
}
/**
* 获取职员的工资
* @return 职员的工资
*/
public double getSalary() {
return this.salary;
}
/**
* 获取入职时间的一个副本
* @return 入职的时间
*/
public GregorianCalendar getHireDate() {
return (GregorianCalendar) this.hireDate.clone();
}
/**
* 给职员增加工资
* @param byPercent 增加的系数
*/
public void raiseSalary(int byPercent) {
this.salary += this.salary * byPercent/100;
}
private String name;
private double salary;
private GregorianCalendar hireDate;
}
/**
* 管理员类,继承自普通员工类
* @author yifan
* @version 1.0 2014-05-14
*/
class Manager extends Employee {
/**
* 构建一个新的管理员
* @param name 管理员的姓名
* @param salary 管理员的工资
* @param year 入职年
* @param month 入职月
* @param day 入职日
*/
public Manager(String name, double salary, int year, int month, int day) {
super(name, salary, year, month, day);
this.bonus = 0;
}
/**
* 构建一个新的管理员并设置管理员的奖金
* @param name 姓名
* @param salary 工资
* @param year 入职年
* @param month 入职月
* @param day 入职日
* @param dBanus 奖金
*/
public Manager(String name, double salary, int year, int month, int day, double dBaous) {
super(name, salary, year, month, day);
this.bonus = dBaous;
}
/**
* 设置该管理员的奖金
* @param dBonus 奖金
*/
public void setBanus(double dBonus) {
this.bonus = dBonus;
}
/**
* 获取管理员的工资
* @return 管理员的工资
*/
@Override
public double getSalary() {
return super.getSalary() + this.bonus;
}
private double bonus;
}
继承的基本演示
最新推荐文章于 2021-03-01 15:06:46 发布