--- tags: Java --- # 繼承、轉型 ![](https://i.imgur.com/acl0FQL.jpg) ## 繼承 * #### 物件導向特性又稱OO特性 1. 封裝 2. 繼承 3. 多形 * #### 程式能重複使用(re-use),易維護 * #### 當super的功能無法滿足或不符合sub的需求時 * * Override(改寫、覆寫) * * 1. 繼承關係 * * 2. 成立條件: (1)繼承 (2) (3) * * 3. 規則: (1) Access Level (2) Return Type (3) Args(參數) > 父類別(super、parent) > * 車 : 有前後左右的方法 > * 動物 : 有吃飯跟呼吸的方法 > > 子類別(sub、child) > * 戰車、賽車、貨車 : 能繼承車的前後左右的方法,也有自己的方法,如戰車能作戰、賽車能比賽、貨車能載貨。 > * Dog、Human、Fish: 能繼承動物的方法,人跟狗用肺去呼吸,但魚是用魚鰓呼吸,這時候就要使用Override去改寫呼吸方法。 Q: 車子的繼承關係 Q: 動物的繼承關係,有用覆寫的功能 --- ![](https://i.imgur.com/ku91BSS.jpg) ## 轉型 #### 資料傳遞時,型別不相同 * Privative * Reference #### 規則 * 基本型別不能跟參考型別做轉型 * 基本型別間,任何一種都不可以跟布林值互相做轉換 * 參考型別要有繼承關係才可以做轉換 ### 由小--->大: Implict(隱含的 * 不會造成資料遺失或錯誤 ### 由大--->小: Explict(明確的)- 1.讓來源的資料一定能符合目的型別的範圍。 2.避免可能造成的錯誤(debug時能好抓出來)。 #### 基本型別之間 1. float->long : 浮點數型別會大於整數,雖然浮點數只有32bit,long有64bit,因為計算到小數點,但整數只有到整數部分。 ``` float i =3.14f; long j = (long) i; //轉型後才可以傳值, j=3 ``` 2. short->byte : 值會在-128 ~ 127 之間 ``` short a = -129; byte b = (byte) a; // b=127 short a = 130; byte b = (byte) a; //b=126 ``` 3. byte->char : char值在0~65535, byte值在-128~127之間,所以char>byte 4. double->long : double比較大 ``` double c = 5.99999999; int d =(int) c; //d=5 ``` 4. char->short : char比較大,因為char的值都正數,short雖然也是65535個,但值是從-32768 ~ 32767 。 ``` char g = 'A'; short h = (short) g; // h=65 ``` ==補充: 小數捨去: 1.整數運算 2.整數轉型== Q: 建立書籍有title、isbn、categories ,問題一,由isbn排序由小到大,問題二,由isbn排序,可選擇由小到大(ASC)或大到小(DESC)、問題三,依可選擇有title或isbn去排序,可小到大或大到小。 > [name=Luke] [time=Mon, Jan 13, 2020] [color=#907bf7]