精華筆記: 向上造型: 代碼復用 超類型的引用指向派生類的對象 能點出來什麼,看引用的類型 這是規定,記住就OK 何時向上造型: 多種角色能幹的事都一樣的時候,可以將多種角色統一造型到超類數組中,實現代碼復用 eg: 學生/老師/醫生都是輸出名字+問好 乾的事都一樣, 就可以將學生/老師/醫生統 ...
精華筆記:
-
向上造型:--------------------------------------------代碼復用
-
超類型的引用指向派生類的對象
-
能點出來什麼,看引用的類型----------------這是規定,記住就OK
何時向上造型:
-
多種角色能幹的事都一樣的時候,可以將多種角色統一造型到超類數組中,實現代碼復用
eg: 學生/老師/醫生都是輸出名字+問好------乾的事都一樣,
就可以將學生/老師/醫生統一造型到Person數組中,這樣一個for即可-------代碼復用
-
-
-
方法的重寫(override/overriding):重新寫、覆蓋
- 發生在父子類中,方法名相同,參數列表相同
- 重寫方法被調用時,看對象的類型-----------------------這是規定,記住就OK
- 重寫需遵循"兩同兩小一大"原則:-------------------------瞭解,一般都是一模一樣的
- 兩同:
- 方法名相同
- 參數列表相同
- 兩小:
- 派生類方法的返回值類型小於或等於超類方法的
- void和基本類型時,必須相等
- 引用類型時,小於或等於
- 派生類方法拋出的異常小於或等於超類方法的------------------------API時講
- 派生類方法的返回值類型小於或等於超類方法的
- 一大:
- 派生類方法的訪問許可權大於或等於超類方法的------------------------明天講
- 兩同:
-
重寫與重載的區別:----------常見面試題
- 重寫:發生在父子類中,方法名相同,參數列表相同
- 重載:發生在同一類中,方法名相同,參數列表不同
筆記:
-
向上造型:--------------------------------------------代碼復用
-
超類型的引用指向派生類的對象
-
能點出來什麼,看引用的類型----------------這是規定,記住就OK
何時向上造型:
-
多種角色能幹的事都一樣的時候,可以將多種角色統一造型到超類數組中,實現代碼復用
eg: 學生/老師/醫生都是輸出名字+問好------乾的事都一樣,
就可以將學生/老師/醫生統一造型到Person數組中,這樣一個for即可-------代碼復用
public class UploadDemo { public static void main(String[] args) { Aoo o1 = new Aoo(); o1.a = 1; o1.show(); //o1.b = 2; //編譯錯誤 //o1.test(); //編譯錯誤,超類不能訪問派生類的 Boo o2 = new Boo(); o2.b = 1; o2.test(); o2.a = 2; //正確 o2.show(); //正確,派生類可以訪問超類的 Aoo o3 = new Boo(); //向上造型 o3.a = 1; o3.show(); //o3.b = 2; //編譯錯誤 //o3.test(); //編譯錯誤,能點出來什麼,看引用的類型 } } class Aoo{ int a; void show(){ } } class Boo extends Aoo{ int b; void test(){ } }
-
-
-
方法的重寫(override/overriding):重新寫、覆蓋
-
發生在父子類中,方法名相同,參數列表相同
-
重寫方法被調用時,看對象的類型-----------------------這是規定,記住就OK
class 餐館{ void 做餐(){ 做中餐 } } //1)我還是想做中餐-----------------不需要重寫 class Aoo extends 餐館{ } //2)我想改做西餐-------------------需要重寫 class Aoo extends 餐館{ void 做餐(){ 做西餐 } } //3)我想在中餐基礎之上加入西餐--------需要重寫(先super中餐,再加入西餐) class Aoo extends 餐館{ void 做餐(){ super.做餐(); 做西餐 } }
-
重寫需遵循"兩同兩小一大"原則:-------------------------瞭解,一般都是一模一樣的
-
兩同:
- 方法名相同
- 參數列表相同
-
兩小:
-
派生類方法的返回值類型小於或等於超類方法的
-
void和基本類型時,必須相等
-
引用類型時,小於或等於
//超類大,派生類小---------爸爸大,兒子小 class Coo{ void show(){} double test(){ return 0.0; } Student say(){ return null; } Person sayHi(){ return null; } } class Doo extends Coo{ //int show(){ return 1; } //編譯錯誤,void時必須相等 //int test(){ return 0; } //編譯錯誤,基本類型時必須相等 //Person say(){ return null; } //編譯錯誤,引用類型時必須小於或等於 Student sayHi(){ return null; } //正確,Student小於Person }
-
-
派生類方法拋出的異常小於或等於超類方法的------------------------API時講
-
-
一大:
- 派生類方法的訪問許可權大於或等於超類方法的------------------------明天講
-
-
-
重寫與重載的區別:----------常見面試題
- 重寫:發生在父子類中,方法名相同,參數列表相同
- 重載:發生在同一類中,方法名相同,參數列表不同
補充:
-
繼承要符合is(是)的關係
-
超類的意義:
- 封裝共有的屬性和行為----------------------實現代碼復用
- 為所有派生類提供了統一的類型----------向上造型(實現代碼復用)