Blogger 站內搜尋

顯示具有 interface 標籤的文章。 顯示所有文章
顯示具有 interface 標籤的文章。 顯示所有文章

2018年11月13日 星期二

Java SE 入門教學 - 抽象類別與介面

更新時間:11/19/2018

前言

前一篇介紹了物件導向,類別的構造與性質,雖然知道把具體或概念一一抽象出來成為類別,碰到相似的具體或概念時,可以使用繼承來減少程式碼的撰寫,但有沒有可能您寫的父類別,繼承過來的子類別卻需要把每個方法都覆寫(Override)一次,導致父類別的方法完全無用武之地呢?

或是您可能想要繼承爸爸與媽媽的意志,爸爸是由爺爺、奶奶這個血脈傳承下來,而媽媽卻是由外公、外婆這個血脈傳承下來,那麼我要如何同時繼承兩個呢?在 JAVA 中規定不能繼承兩個類別,那怎麼辦?

一、抽象類別(abstract class)

既然父類別的方法無用武之地,那麼我們只宣告方法名稱而不實作當中的邏輯,這樣的方法稱之為「抽象方法」(Abstract method)

如果一個類別中包括了抽象方法,則該類別稱之為「抽象類別」(Abstract class),抽象類別是個未定義完全的類別,所以它不能被用來生成物件,它只能被擴充,並於擴充後完成未完成的抽象方法定義。

在 Java 中要宣告抽象方法與抽象類別,使用"abstract"關鍵字。

從某種意義上來說,抽象方法就是被用來重寫的,所以在父類別宣告的抽象方法一定要在子類別裡面重寫。如果真的不想在子類別裡面重寫這個方法,那麼可以在子類別裡面把這個方法再定義為抽象方法,因為子類別覺得我去實現也不合適,應該讓繼承我的子類別去實現比較合適,因此也可以在繼承這個子類別的下一個子類別裡面重寫父類別宣告的抽象方法,這樣是可以的。