程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java語言入門教程(十二):Java語言中繼承之基本概念

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

編輯:關於JAVA

從教程(十)開始,已經從學習單個類的基本語法,轉到了學習多個類之間 的關系。教程(十)中,學習了類與類長間的兩種關系,關聯和依賴。為了維護 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中是單繼 承,即一個類只能繼承一個父類。

繼承中還有很多其他的細節,如方法覆蓋,構造方法,抽象類,多態參數等 ,在後續教程中,將逐一介紹。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved