# Basic ###### tags: `Java` **Package** - 組織專案 - 製造出命名空間 - 實現封裝 **Import** - import的用意只是幫程式設計師省去每個class的package名稱! - 預設載入的package => java.lang* 、目前所在的package **資料型態** 1.基本資料型態 primitive data type byte、short、int、long、boolean、float、double、char 2.參考資料型態 reference data type 在使用基本資料型態的物件型時 Ex Long 、 Integer ... 在使用==比較時要注意cache的問題會導致結果有問題 Long.valueOf(128) == Long.valueOf(128); // false **封裝** 資訊隱藏 : 只讓外部看到外部需要看到的部份 **繼承關係** 使用IS-A來驗證繼承結構的合理性 EX : 鋼琴、河馬皆會發生聲音,但這兩個物件的關係對於繼承結構來說並不合理, 因此在這個場景正確的方式是抽象出聲音物件,而兩者會是以HAS-A來運用該物件 **繼承意義** 藉由提取出一群class間的共同抽象性,將這個部分擺在superclass,如此一來共通的部分需要修改的話只需要修改一個地方,且這樣的修改會套用到所有繼承的class,修改後只需要重新編譯就好不需動到subclass - 避免重複程式碼 - 定義出共通的協議 繼承讓你可以確定某個supertype之下的所有class都會有supertype允許持有的所有方法 換言之,妳會透過繼承來定義相關class間的共通協議 限制繼承的方法 1. 存取控制 > 除了inner class ,class只能用public 或 沒修飾字(同包才能繼承) 2. 使用final 修飾 3. 讓class只擁有私有建構子 共通協議限制 override 1. 回傳型別必須相容 2. 存取權限不能縮小 3. 例外等級不能放大 overload 1. 必須有不同的參數。 ex : 順序 、 型態、數量 2. 不能只改變回傳型態、可以任意變更存取權限 **多型** 一個物件多種類型 指父類別可透過子類別衍伸成多種型態,而父類別為子類別的通用型態,再透過子類別可覆寫父類別的方法來達到多型的效果,也就是同樣的方法名稱會有多種行為。