1. 程式人生 > >面向物件特徵之一:多型

面向物件特徵之一:多型

有小夥伴看到這篇文章就在想多型是不是很難,我可以告訴你:並沒有

簡單的說,多型(繼承多型)指的是    在父類中的行為在子類中有多種不同的表現形式。

還不能理解?

話不多說我們直接看程式碼:


上面父類中的teachLession()抽象方法 被子類進行了重寫,第一種表現形式是教  多型,第二個種表現形式是教  JavaScript

父類中的行為(teachLession() 方法)在子類中有多種(兩種)表現,這不就是多型(繼承多型)麼。

你以為這樣就完了?不可能的,不存在的,這輩子都不可能講一個知識點。

現在我們定義一個領導類,用來對老師進行查課


領導開始查課


這樣子我們已經對兩個老師進行查課了,那如果有幾百個老師那是不是要寫幾百個查課方法,寫幾千行程式碼呢?是不是會發現總感覺程式碼重複很多?所以得進行優化,我們可以只用一個方法就將所有不同學科的老師全查課。這個時候就用到了多型的另外一個知識點:

多型中子類的例項可以用父類的型別來接收。

有人就會問這啥意思啊,請看下面程式碼:

開始我們是這樣寫的:


然後我們用上面那個知識點進行優化,如下:


有人問這啥意思啊,其實上面那段知識點已經很清楚了,子類的例項——>jt,用父類來接收——>Teacher 父類。

有人看到這覺得也沒啥用啊,沒feel。

我們在繼續建立wt物件:


然後Leader類中我把東西全刪了(這已經在優化中)


然後我們貫徹    只用一個方法就將所有不同學科的老師全查課  這個思想進行下去。


jt 和 wt都是用Teacher 型別來接收的,所以引數能傳遞進checkTeacher方法,由此減少了程式碼量。