Inheritance

Java 基本介紹 (3)

教學目標

初步了解 Java 程式語言中物件導向中類別、繼承、介面和套件的基本概念與應用。

重點概念

Java 程式語言中物件導向的基本概念主要包括物件、類別、繼承、介面和套件。所謂類別是一個軟體建構主要定義狀態和行為,它本身並不是一個物件,類別就像是一個藍圖,主要定義當物件從類別宣告的規範中建立物件的狀態和行為,透過實體化物件所定義的類別以取得具體的物件。因此我們可以從一個類別定義中實體化許多物件。若對應至現實生活中,則我們經常會發現許多單獨的物件都是一樣的。

然而不同種類的物件通常具有一定共同之處,此時若透過物件導向為主的程式設計則允許類別從其它類別繼承常用的狀態和行為,所有類別物件皆會繼承 Object 類別,此外在 Java 程式語言中一個類別只能繼承單一類別,也就是單一繼承模型。若我們要繼承多個類別時,則只能透過實作介面的方式解決,因為多重繼承會為程式設計師的混亂和膨脹,此時 Java 程式語言中透過介面以更優雅的方式解決問題。在 Java 程式語言中只是針對物件宣告將會實作的方法規範,並不包括實體變數或實體方式,只會以常數和方法宣告的方式實作,簡單來說物件透過公開的方法定義與外部溝通的方式,此時方法就是物件與外部溝通的介面。

範例程式碼

檔案名稱

MRT.java

情境說明

在現實生活中台北捷運站每一站皆有自動提款機,此時我們就能用 Java 物件導向的概念進行初步實作在台北捷運站中啟動和關閉自動提款機。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.lang.*;
public class MRT {
public static void main(String[] argv) {
ATM atm1 = new ATM();
ATM atm2 = new ATM();
atm1.on();
atm2.on();
atm1.off();
atm2.off();
}
}
interface Machine {
void on();
void off();
}
class ATM extends Object implements Machine{
private String bank = "國泰世華銀行";
public void on() {
System.out.println(bank + "的自動提款機啟動。");
}
public void off() {
System.out.println(bank + "的自動提款機停止。");
}
}

執行結果

1
2
3
4
國泰世華銀行的自動提款機啟動。
國泰世華銀行的自動提款機啟動。
國泰世華銀行的自動提款機停止。
國泰世華銀行的自動提款機停止。

此外在 Java 程式語言中宣告一個類別、方法和資料時,則可以設定四種等級的存取方式,分別為公開、保護、私有和友好,首先公開為可以隨時隨地的使用,接著保護為只能在該類別和繼承類別中存取,再來私有為只能在該類別中存取,至於友好則是沒有指定存取等級,則代表在同一個套件中所有的物件皆可存取。

宣告關鍵字 同一類別 同一套件 繼承類別 其它套件
public
protected
friendly
private

最後在 Java 程式語言中的套件則是指命名空間,其主要是組織一組相關的類別和介面,概念上有點類似資料夾,由於在 Java 程式語言開發軟體的過程中主要是由數百或數千個單獨的類別所組成,所以透過將相關的類別和介面打包為套件是有意義的一件事,當然在 Java 平台中也提供龐大的類別庫,這種類別庫被稱為 API,其代表通用開發最相關的任務,例如: String 物件包括字串的狀態和行為,File 物件允許程式設計師輕鬆地建立,刪除,檢查,比較或修改文件,…,等,因此對於程式設計師來說主要專注於特定應用程式的設計,而不是針對工作所需的基礎架構進行設計。總結與其說 Java 是個程式語言,還不如說 Java 是個平台更為適當。

相關資源

Java 基本介紹 (2)

教學目標

初步了解 Java 程式語言中物件導向中物件的基本概念。

重點概念

Java 程式語言中物件導向的基本概念主要包括物件、類別、繼承、介面和套件。所謂物件通常被使用於建立現實生活中的物件,現實生活中的物件皆有兩個特性,分別為狀態和行為。此時軟體物件概念類似於現實生活中的物件,主要會透過方法公開其行為,以及透過方法針對物件中的狀態進行操作,其中會儲存狀態的資料,同時物件導向的應用非常適合分散式客戶端與伺服器的軟體需求。

接著將程式碼以物件導向的方式實作時則有下述四大好處:

  1. 模組化: 物件彼此之間的程式碼可以獨立撰寫和維護,同時物件一旦建立之後,物件就能很容易地傳遞至系統內部。
  2. 資訊隱藏: 透過物件的方法進行互動,此時物件內部的細節資訊將會被隱藏起來。
  3. 程式碼重用: 若物件已經存在時,則可以直接在程式中使用該物件。
  4. 容易除錯: 若特定的物件若存在問題,則可以直接將該物件從應用程序中刪除,以其它物件進行更換。

然而要如何進行實作,此時我們就必須了解物件導向程式語言的四大特性:

  1. 封裝: 實現模組化和資訊隱藏。
  2. 多態: 相同的訊息會傳送至不同物件中時會根據訊息和物件的特性導致不同的行動。
  3. 繼承: 根據現有的類別定義新的類別和行為,以利重用和組織程式碼。
  4. 動態綁定: 物件可以來自於任何地方,當撰寫程式碼時只需要將訊息傳送到物件,此時對於程式執行時提供最大的靈活性。

總結物件技術主要是分析、設計和程式設計方法的集合,其設計專注於針對現實生活中物件的狀態和行為進行建模。例如: 當我們透過 ATM 自動提款機進行提款時,則就會有 ATM 自動提款機的物件建模,一台自動提款機會有狀態 (現金) 和行為 (提款)。

相關資源