標籤:java 繼承 多態
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 blocke.printStackTrace();}}}
這裡首先實現了對所有人員進行管理的方法。對普通員工的管理,只要執行個體化若干個一個對象即可進行管理,但是對經理的管理,需求不同,因此,要建立子類,從這裡繼承:
package com.myHelloWorld;public class Manager extends Employee{private double bonus;@Overridepublic String getName() {// TODO Auto-generated method stubreturn 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 stubEmployee 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』的格式輸入生日,這樣就方便多了,也直觀多了。
這就是多態。
Java的繼承與多態