多態:可以理解爲事物存在的多種形態。比如人:男人,女人。
Cat c=new Cat()------------------>Animal c=new Cat();
---------------------------------------------------------------------------------------------------------------
多態的體現:
父類的引用指向了自己子類的對象;
(父類的引用可接收自己子類的對象)
---------------------------------------------------------------------------------------------------------------
多態的好處:
提高程序的擴展性
---------------------------------------------------------------------------------------------------------------
多態的繼承:
類與類之間有關係,要麼繼承,要麼實現,通常存在覆蓋
---------------------------------------------------------------------------------------------------------------
弊端:提高擴展性,但只能用父類的引用訪問父類中的成員。
---------------------------------------------------------------------------------------------------------------
轉型:
Animal a=new Cat();------向上轉型
如何調用貓的特有方法呢?
採用強制轉型的方法:
Cat c=(Cat)a;--------向下轉型
所以,先發生向上轉型,才能發生向下轉型。
---------------------------------------------------------------------------------------------------------------
注意:
1.不允許將父類的對象轉換成子類類型,而是將父類引用指向子類對象,該引用可被提升/強制轉換;
2.多態至始至終都是子類對象在做着變化。
---------------------------------------------------------------------------------------------------------------
在多態中非靜態成員函數的特點:
1.在編譯期間:參閱引用型變量所屬的的類中是否有調用的方法。
如果有,編譯通過,如果沒有編譯失敗。
2.在運行期間:參閱對象所屬的類是否含有調用的方法
即:Animal a=new Cat():編譯看左邊,運行看右邊
---------------------------------------------------------------------------------------------------------------
3.多態中成員變量特點:編譯運行都參考左邊,即引用型變量所屬的類
4.在多態中,static 成員:無論編譯運行都參考左邊。
---------------------------------------------------------------------------------------------------------------