继承的基本演示

来源:互联网 发布:d3.js的作用 编辑:程序博客网 时间:2024/05/05 15:10
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 管理员的工资 */@Overridepublic double getSalary() {return super.getSalary() + this.bonus;}private double bonus;}

0 0
原创粉丝点击