還記得前幾篇文章教的類別繼承嗎---
如果變成下面的狀況還會合理嗎?
這張架構圖我們可以翻成中文 -
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#