iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0

還記得前幾篇文章教的類別繼承嗎---
如果變成下面的狀況還會合理嗎?

https://ithelp.ithome.com.tw/upload/images/20200925/20128925YCsk2rIjtk.png

這張架構圖我們可以翻成中文 -
Shark 繼承了 Swimmer 類別,所以他會游泳。
這時候若還有一個Eat類別,就會發現 Shark也需要擁有會吃的行為。

但在java中,類別與繼承是 1 對 1的關係,所以不能這樣寫。

我們來看看何謂介面(Interface)?

以Java的語意來說,繼承(extends)會有 " 是一種 " 關係,實作介面則表示 " 擁有行為 ",但不會有 " 是一種 " 的關係。

預先定義規格給實作此介面的所有子類別
介面可說是一種所有方法皆為抽象方法的抽象類別,所以子類別必須實作介面的所有抽象方法

而介面跟介面之間是可以再繼承(extends)的。

我們可以把上述的架構改成介面方式 -

public interface Swimmer {
    public abstract void swim();
}

public interface Eat{
    public abstract void eat();
}
public Shark implements Swimmer, Eat {
    public void swim(){
        System.out.println("Swimming!");
    }

   public void eat(){
     System.out.println("Eating!");
   }
 }

以上就是今天的內容。
善用介面可以讓你的程式碼更具有架構性以及更結構化,介面更是物件導向程式中一個不可或缺的元素喔~


Hi, I am Grant.

個人部落格 - https://grantliblog.wordpress.com/
個人網站 - https://grantli-website.netlify.app/#/mainpage
我的寫作專題 - https://vocus.cc/user/5af2e9b5fd89780001822db4#


上一篇
Day11 - Collection 與 Map(續)
下一篇
Day13 - 例外處理
系列文
30天手把手帶你跟JAVA變成好朋友 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言