swift的class里面包含inheritance诱贿,overriding娃肿,polymorphism和composition
今天主要講解繼承(inheritance)和重寫(overriding)
首先什么是繼承?用通俗易懂的話來說珠十,比如你繼承了你父母的公司料扰,那么你就擁有了繼承的公司的全部財產(chǎn)(property),在此基礎(chǔ)上你還可以繼續(xù)把公司進(jìn)行的更好讓公司擁有更多的財產(chǎn)(property)焙蹭,在swift里面的class的繼承(inheritance)里面晒杈,父類(parent class)就相當(dāng)于上述例子中你父母的公司,子類( child class)就相當(dāng)于上述例子中的你
接下來讓我們看看代碼
很明顯的一點是Student和Person里面有部分屬性重復(fù)了孔厉,都有firstName和lastName拯钻,我們通過class的繼承可以避免重復(fù)冗余代碼的出現(xiàn)帖努,我們用Student繼承Person即可,這樣Student也會擁有Person的各種屬性粪般,代碼如下
上圖可以很清晰的看到Student繼承了Person拼余,此時Student是Person的子類,Person是Student的父類亩歹,Student擁有Person的各種屬性
現(xiàn)在我們來說一下重寫(overriding)
在 Swift 中匙监,類可以調(diào)用和訪問超類的方法,屬性和附屬腳本(subscripts)捆憎,并且可以重寫(override)這些方法舅柜,屬性和附屬腳本來優(yōu)化或修改它們的行為。Swift 會檢查你的重寫定義在超類中是否有匹配的定義躲惰,以此確保你的重寫行為是正確的致份。
看下面的例子,我們定義了一個學(xué)生運動員(StudentAthelte)的類础拨,它繼承自Student氮块,然后我們在StudentAthelte里面重寫了recordGrade這個方法,代碼如下
這樣我們就重寫了recordGrade這個方法,讓我們來看看這個方法吧
重寫后的recordGrade統(tǒng)計出了grades里面litter為F的數(shù)目诡宗,我們并設(shè)定了一個淘汰值滔蝉,當(dāng)grades里面的F數(shù)量達(dá)到3時就淘汰掉。