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

Java語言入門教程(十三):Java語言中繼承中的構造方法問題

編輯:關於JAVA

教程(十一)中,了解了Java語言中繼承的基本概念。Java中類與類的繼承 ,是單繼承,主要目的是復用。子類對象可以復用父類中權限允許的屬性和方法 ,所以子類的構造方法和父類的構造方法之間,有一定的調用關系,本文中將進 行詳細介紹。

首先,需要記住一個事實:子類的任何一個構造方法,都將先調用父類某個 構造方法。如子類Trainer中的構造方法:

public Trainer() { }

雖然這個構造方法的方法體中什麼代碼也沒有寫,但是也調用了父類 Employee的構造方法,默認調用的是Employee中無參的構造方法:

public Employee() { }

至於為什麼默認調用的是無參構造方法,後面會有講解。

也就是說,任何一個子類的任何一個構造方法,都必定會調用父類的某個構 造方法,但是到底會調用到哪個構造方法,取決於子類構造方法的寫法。如果子 類構造方法的第一條語句不是super語句,那麼就默認調用父類無參的構造方法 ,如上面展示的代碼。如果Trainer類中有如下構造方法:

public Trainer(String name, double salary, String course) { this.course = course; }

這個構造方法也是先調用的Employee的無參構造方法,因為第一條語句不是 super語句。但是,這個構造方法,顯然是為了初始化name,salary,course,其中 name和salary的初始化可以調用Employee中的這個構造方法進行:

public Employee(String name, double salary) { this.name = name; this.salary = salary; }

如何才能在Trainer的構造方法中,指定先調用Employee的某個構造方法,而 不是默認調用無參的哪?使用super即可。

注意,super語句必須放在第一條語句。

public Trainer(String name, double salary, String course) { super (name, salary); this.course = course; }

總結一下,在繼承中,有關構造方法,有如下幾點需注意:

1、子類的任何構造方法,都會調用父類的某個構造方法。

2、如果子類的構造方法第一條語句不是super語句,那麼就調用父類的無參 的構造方法,與第一條語句寫super()同樣的效果。因此,父類中,最好保留一 個無參的構造方法。

3、在子類構造方法的第一條語句,可以通過寫super語句,可以指定任何一 個需要調用的構造方法,主要通過參數個數和類型區別。了解這些知識點後,初 學者對於繼承中的構造方法應該比較清楚,在接下來的教程中,將逐步了解繼承 中的覆蓋、多態等其他概念。

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