Java的继承与多态对于提高开发效率,减少开发量,是非常有帮助的,也便于代码维护。下面是根据书上讲的,我又做了改进的例子。
假设需求:
公司需要对所有人员进行管理,所有人员分为普通员工和经理人,他们的头衔、工资、生日等信息都是不一样的,但是不能开发两套系统分别进行管理,而是要一套系统完成对所有人的管理。
设计一个员工类,这是父类,定义如下:
package com.myHelloWorld; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Employee { private String name; private double salary; private Date birthday; public String getName() { return name; } public void setName(String name) { this.name = name; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public void setBirthday(String birthday) { SimpleDateFormat simleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { this.birthday = simleDateFormat.parse(birthday); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package com.myHelloWorld; public class Manager extends Employee{ private double bonus; @Override public String getName() { // TODO Auto-generated method stub return super.getName() + "经理"; } public double getBonus() { return bonus; } public void setBonus(double bonus) { this.bonus = bonus; } }
package com.myHelloWorld; import java.util.Date; public class EmployeeTest { public static void main(String[] args) { // TODO Auto-generated method stub Employee empolyee = new Employee(); empolyee.setName("Java"); empolyee.setSalary(1000); empolyee.setBirthday(new Date()); Manager manager = new Manager(); manager.setName("编程高手"); manager.setSalary(3000); manager.setBirthday(new Date()); manager.setBonus(2000); System.out.println("员工的姓名:" + empolyee.getName()); System.out.println("员工的工资:" + empolyee.getSalary()); System.out.println("员工的生日:" + empolyee.getBirthday()); System.out.println("经理的姓名:" + manager.getName()); System.out.println("经理的工资:" + manager.getSalary()); System.out.println("经理的生日:" + manager.getBirthday()); System.out.println("经理的奖金:" + manager.getBonus()); empolyee.setBirthday("1980-10-12"); manager.setBirthday("1970-01-23"); System.out.println("更新员工的生日为:" + empolyee.getBirthday()); System.out.println("更新经理的生日为:" + manager.getBirthday()); } }
这是输出截图:
这就是继承,也包含了重写。
大家可能注意到了,在设置人员生日的时候,我们的第一套方法强制要求输入Date类型的数据才能识别,这在许多场合并不方便,而且需要做很多额外的处理工作,那么我们再创建一个这个方法的重载,允许以『yyyy-MM-dd』的格式输入生日,这样就方便多了,也直观多了。
这就是多态。
原文地址:http://blog.csdn.net/ccpw_cn/article/details/44862147