---
# System prepended metadata

title: 介面

---

# 介面
## 目的:利用介面，可以達到繼承無法做到的多重繼承概念
1. 介面主要是開規格，因此都是抽象的方法，透過Override(覆寫)進行實作，賦予類別「特性」。
2. 
3. 介面定義語法如下:
```
public interface 介面名稱{
public 方法;//方法必須是public
}
```
4. 要實作的類別語法:
class classname implements 介面,介面1,介面2...{
要實作的方法
} 
5. 例子:例如可以讓食物有Expireable(最後使用期限)的特性，SimCard也有，透過instanceof 去判斷是否有此特性(介面)。
6. 若介面要定義常數，
   a. 必須全大寫
   b. 要有static(因為介面不能被new)
   c. 不能重新被指定值，因此要final
   d. 若有多個名詞組合，利用_區隔

7. JDK8後介面支援實作，但方法必須加上 default(可覆寫) 或是 static (不可覆寫)


## Anonymous class:不需要宣告類別名稱，只需要提供缺少的實作方法，通常用在實作介面或者抽象類別中。☆最後結尾一定要有分號;☆

1. 介面 變數名稱=new 介面(){
實作介面方法
};

2. 抽象類別 變數名稱=new 抽象類別(){
實作抽象類別中的方法
}