Java語言入門教程(十二):Java語言中繼承之基本概念

來源:互聯網
上載者:User

從教程(十)開始,已經從學習單個類的基本文法,轉到了學習多個類之間 的關係。教程(十)中,學習了類與類長間的兩種關係,關聯和依賴。為了維護 1對多的關係,在教程(十一)中,學習了數組。除了關聯和依賴,類與類還有 一種非常重要且常見的關係,就是繼承。本文將介紹繼承的概念、作用、使用場 景等。

假設有這樣一個簡單需求(其實談不上是需求,僅僅為了初學者容易理解而 編造):某培訓中心要開發一個內部員工管理系統。該培訓中心目前有兩個部門 ,技術資源部和業務部。技術資源部的員工負責講課,稱為講師。業務部員工負 責聯絡洽談業務,稱為銷售。在管理系統中,需要管理的是所有員工的姓名、薪 水,以及講師的技術方向,銷售的任務量。…..

對上述簡單描述,讓我們分析一下,該培訓中心的系統中,主要管理的對象 是什嗎?不難看出,主要是兩種員工,即講師和銷售。講師和銷售有不同之處, 如講師有授課方向屬性,銷售有任務量屬性,二者還有很多相同之處,比如都需 要管理其名字,薪水。也就是說,如果我們建立兩個類,Trainer類,Sales類, 那麼這兩個類中一定有相同的部分。物件導向編程的一大目標就是重複使用,我 們如何能讓多個類中相同的部分能重複使用哪?就可以藉助繼承這一特性來完成 。可以說,繼承的主要目的是為了重複使用。我們可以把多個類中相同的部分抽 取出來,放到一個類中,這個類叫父類,或者超級類,其他的類可以繼承這個類 ,從而重用該類中的屬性和方法,這些類叫子類,或者衍生類。在Java語言中, 繼承使用extends關鍵字完成。

接下來,我們使用代碼,把培訓中心的員工類進行展現。

package com.csst.inherit;public class Employee {    private String name;    private double salary;    public Employee() {    }    public Employee(String name, double salary) {       super();       this.name = name;       this.salary = salary;    }    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;    }}package com.csst.inherit;public class Trainer extends Employee {       private String course;       public Trainer() {       }       public Trainer(String name, double salary, String course) {              super(name, salary);              this.course = course;       }       public String getCourse() {              return course;       }       public void setCourse(String course) {              this.course = course;       }}package com.csst.inherit;public class Sales extends Employee {       private double task;       public Sales() {              super();       }       public Sales(String name, double salary, double task) {              super(name, salary);              this.task = task;       }       public double getTask() {              return task;       }       public void setTask(double task) {              this.task = task;       }}package com.csst.inherit;public class TestEmployee {    /**     * @param args     */    public static void main(String[] args) {       // TODO Auto-generated method stub       Sales sale=new Sales("Kate",3000,100000);       System.out.println("sale.name : "+sale.getName()+" sale.salary : "+sale.getSalary()+" sale.task: "+sale.getTask());       Trainer trainer=new Trainer("Rose",3000,"Java");       System.out.println("trainer.name: "+trainer.getName()+" tainer.salary: "+trainer.getSalary()+" trainer.course: "+trainer.getCourse());    }}

運行結果為:

sale.name : Kate sale.salary : 3000.0 sale.task: 100000.0

trainer.name: Rose tainer.salary: 3000.0 trainer.course: Java

以上代碼中,Employee是父類,Trainer和Sales是子類,通過extends繼承了 Employee。因為繼承了Employee,所以Trainer和Sales可以重複使用Employee中 的方法,如getName,getSalary,當然,需要注意許可權問題。

繼承是“is-a”關係,即子類對象都是父類類型的對象。如Trainer的對象可 以說是一個Employee類型對象。在Java語言中,一定要記住的是: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.