一.什麼是多態?
一個對象有不同的形態。
比如:每個人在不同的場景有着不同的身份
二.使用多態的前提(重點)?
- 子父類繼承關係。
- 接口實現關係。
- 必須有方法的重寫。
- 父類引用指向子類對象(父類 對象名 = new 子類())。
三.注意!
多態在默認情況下只能調用子類重寫的方法,不能調用子類特有方法。
四.多態成員變量的訪問特點!
等號左邊是誰就調用誰的成員變量
五.多態成員方法的訪問特點!
看new的是誰就調用誰的成員方法(一定是子類重寫的!不能是子類特有的方法!!!!!!!)。
六.爲什麼要用多態?
那我們爲什麼要用多態呢??
多態的好處不是體現在new對象的,而是體現在方法的參數傳遞上(參數爲父類類型,接受任何它的子類)。
原始方法:類名 對象名 = new 類名(); — 等號兩邊是一樣的。
原始方法的好處:即可以調重寫的,還可以調子類特有的方法!
原始方法的壞處:擴展性差–體現在方法參數上!
多態方式:父類引用指向子類對象。
多態方法的壞處:不能直接調用子類特有的方法。
多態方法的好處:擴展性強!
七.多態的轉型
1.向上轉型
1.定義格式
父類 對象名 = new 子類()----默認的。
2.向上轉型的壞處:不能調用子類特有方法。
2.向下轉型(強轉)
1.定義格式
子類 對象名 = (子類)父類。
2.向下轉型的好處:能調用子類特有方法。
3.向下轉型的問題:容易出現轉型失敗的問題。classCastException
4.向下轉型問題解決:對象名 insetanceof 類名 -->判斷前面的對象是不是屬於後面的類