原創文章,歡迎轉載。轉載請註明:關東昇的博客 php
下標是一種特殊屬性。子類屬性重寫是重寫屬性的getter和setter訪問器,對下標的重寫也是重寫下標的getter和setter訪問器。java
下面看一個示例:微信
class DoubleDimensionalArray { let rows: Int, columns: Int var grid: [Int] init(rows: Int, columns: Int) { self.rows = rows self.columns = columns grid = Array(count: rows * columns, repeatedValue: 0) } subscript(row: Int, col: Int) -> Int { //定義下標 get { return grid[(row * columns) + col] } set { grid[(row * columns) + col] = newValue } } //定義下標 } class SquareMatrix: DoubleDimensionalArray { override subscript(row: Int, col: Int) -> Int { //重寫父類下標 get { return super.grid[(row * columns) + col] } set { super.grid[(row * columns) + col] = newValue * newValue } } } var ary2 = SquareMatrix(rows: 5, columns: 5) for var i = 0; i < 5; i++ { for var j = 0; j < 5; j++ { ary2[i,j] = i + j } } for var i = 0; i < 5; i++ { for var j = 0; j < 5; j++ { print("\t\t \(ary2[i,j])") } print("\n") }
其中super.grid[(row * columns) + col]語句中使用super調用父類的grid屬性。ide
其中super.grid[(row * columns) + col] = newValue * newValue語句是給父類的grid屬性賦值。 網站
歡迎關注關東昇新浪微博@tony_ 關東昇。
關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息
更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.phpspa