Java的繼承與多態

來源:互聯網
上載者:User

標籤: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的繼承與多態

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.