面向物件特徵之一:多型
阿新 • • 發佈:2018-12-23
有小夥伴看到這篇文章就在想多型是不是很難,我可以告訴你:並沒有
簡單的說,多型(繼承多型)指的是 在父類中的行為在子類中有多種不同的表現形式。
還不能理解?
話不多說我們直接看程式碼:
上面父類中的teachLession()抽象方法 被子類進行了重寫,第一種表現形式是教 多型,第二個種表現形式是教 JavaScript。
父類中的行為(teachLession() 方法)在子類中有多種(兩種)表現,這不就是多型(繼承多型)麼。
你以為這樣就完了?不可能的,不存在的,這輩子都不可能講一個知識點。
現在我們定義一個領導類,用來對老師進行查課
領導開始查課
這樣子我們已經對兩個老師進行查課了,那如果有幾百個老師那是不是要寫幾百個查課方法,寫幾千行程式碼呢?是不是會發現總感覺程式碼重複很多?所以得進行優化,我們可以只用一個方法就將所有不同學科的老師全查課。這個時候就用到了多型的另外一個知識點:
多型中子類的例項可以用父類的型別來接收。
有人就會問這啥意思啊,請看下面程式碼:
開始我們是這樣寫的:
然後我們用上面那個知識點進行優化,如下:
有人問這啥意思啊,其實上面那段知識點已經很清楚了,子類的例項——>jt,用父類來接收——>Teacher 父類。
有人看到這覺得也沒啥用啊,沒feel。
我們在繼續建立wt物件:
然後Leader類中我把東西全刪了(這已經在優化中)
然後我們貫徹 只用一個方法就將所有不同學科的老師全查課 這個思想進行下去。
jt 和 wt都是用Teacher 型別來接收的,所以引數能傳遞進checkTeacher方法,由此減少了程式碼量。