今天在復習多態,之前確實理解的不夠深。自己做個總結,關於多態,有3個重要的東西:
1.繼承
我們可以把動物看成是一個父類,鳥屬於動物,所以鳥類可以去繼承動物類,並且可以擁有動物類通用的屬性,例如。動物會吃東西,鳥也會吃東西,但是鳥吃的東西的方法是可以具體的。而動物只能說他們都會吃東西,但是我們卻不能說動物都吃些什麼東西,我們並不知道動物到底指的是什麼動物,所以就不知道這個動物到底該吃些啥。
2.方法的覆蓋
動物都會吃東西,我們可以為動物這個父類寫一個吃的方法。但是在子類裡我們使用父類這個吃的方法就不能滿足我們的需要,例如 小鳥可以吃小蟲子,小雞可以吃米,而動物只是有一個吃的方法!
在子類裡再去寫一個吃的方法,只是吃的東西不一樣,或者說裡面的語句塊不一樣,那麼就是方法的覆蓋了,寫完這個方法,這兩個方法應該有這樣的特征:父類與子類有同樣的方法名和參數,裡面所實現的東西是不一樣的。
3.父類引用指向子類的對象
Animal aa=new Birds();
這樣就是把父類的引用指向了一個子類的對象,向上轉型是自動,向下轉型要強制轉換一下。
然後是一些關於父類與子類的方法在調用時的區別:
如果父類定義了方法,子類繼承後重寫了這個方法,那麼對象調用的是子類的方法。
如果父類定義了一個方法,子類沒有重寫這個方法,那麼對象用的是父類的方法
如果子類定義的方法父類沒有定義,那麼對象無法調用子類的方法。
每天總結一點,堅持下去。
晚安世界 23:01:51