天天看點

《從零開始學Swift》學習筆記(Day 44)——重寫屬性

原創文章,歡迎轉載。轉載請注明:關東升的部落格

重寫執行個體屬性

我們可以在子類中重寫從父類繼承來的屬性,屬性有執行個體屬性和靜态屬性之分,他們在具體實作也是不同的。

執行個體屬性的重寫一方面可以重寫getter和setter通路器,另一方面可以重寫屬性觀察者。

計算靜态屬性需要使用getter和setter通路器,而存儲屬性不需要。子類在繼承父類後,也可以通過getter和setter通路器重寫父類的存儲屬性和計算屬性。

下面看一個示例:

從屬性重寫可見,子類本身并不存儲資料,資料是存儲在父類的存儲屬性中的。

以上示例是重寫屬性getter和setter通路器,我們還可以重寫屬性觀察者,代碼如下:

代碼student1.age = 6修改了age屬性,修改前後的輸出結果如下:

學生年齡新值:6

學生年齡舊值:18

重寫靜态屬性

在類中靜态屬性定義使用class或static關鍵字,但是使用哪一個要看子類中是否重寫該屬性。class修飾的屬性可以被重寫,static關鍵字就不能被重寫。

示例代碼如下:

由于要被重寫是以代碼class var staticprop: double 中的class不能換成static。代碼overrideclass var staticprop: double中的靜态屬性staticprop可以使用class或static,除非在termaccount的子類中重寫屬性staticprop。

歡迎關注關東升新浪微網誌@tony_關東升。

關注智捷課堂微信公共平台,了解最新技術文章、圖書、教程資訊

 ​

《從零開始學Swift》學習筆記(Day 44)——重寫屬性