原創文章,歡迎轉載。轉載請注明:關東升的部落格
重寫執行個體屬性
我們可以在子類中重寫從父類繼承來的屬性,屬性有執行個體屬性和靜态屬性之分,他們在具體實作也是不同的。
執行個體屬性的重寫一方面可以重寫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_關東升。
關注智捷課堂微信公共平台,了解最新技術文章、圖書、教程資訊