--- tags: Java --- {%hackmd theme-dark %} 進階Java筆記0311 Enum & Interface === <br> ## 抽象類別enum 就是個列舉式的抽象類別。以下的範例當中Monday、Tuesday等等,都是屬於類別。 ```java= public enum Week{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}; ``` <br> enum使用方式 ```java= public class test { public enum Week {Mondat, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday} public static void main(String [] args) { Week[] days = Week.values(); for(Week day: Week.values()) System.out.println(day + "(" + day.ordinal() + ")"); } } ``` <br> enum特性 ![](https://i.imgur.com/WrFUTFG.png) A. 可實作介面 C. 是安全型態 E. 可宣告private建構子 (無宣告預設為private) F. 隱性(?)實作Comparable類別 <br> ## What is typesafe in 爪哇? 一個避免 typeerror 的寫作方式。目的是要提前預測型別錯誤導致的當機。 如果程式執行中能夠被檢測出該程式的執行過程違背程式員的意圖,就該被標上「不安全」。 <br> ## 介面 (Interface) * 不可宣告變數 必須為常數 (final) * method預設為abstract 不可定義 * Interface不可Instance (new) :-1: >一個沒有被實做出來的類別無法被new。 ex: abstract * 可以一次Implements多個Interface * 一個class implements一個interface必須定義所有method ## 抽象類別 vs 介面(interface) ### 1. 整合需求 | 抽象類別 | 介面 | | --------| --------| | 整合同類 | 整合異類 | ![](https://i.imgur.com/kxLSuwS.png =1000x) ### 2.語法 | 類別 | 介面 | | --------| --------| | extends (擴充) | implement (實作) | <br> ## 不要把負擔帶回家 ``` java= public enum MyColor{ RED(0xff0000),GREEN(0x00ff00),BLUE(0x0000ff); private final int rgb; //field MyColor(int rgb){this.rgb = rgb;} public int getRGB(){return rgb;} } public static void main(String[] args){ MyColor purple = MyColor.GREEN; ``` ## 卡蚯蚓烤肉 {%youtube 5T61GF6_2tY %} ## yogo osu {%youtube GkbSzAnXqfE %}