下标是一种特殊属性。子类属性重写是重写属性的getter和setter访问器,对下标的重写也是重写下标的getter和setter访问器。
下面看一个示例:
- classDoubleDimensionalArray{
- letrows:Int,columns:Int
- vargrid:[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{
- returngrid[(row*columns)+col]
- }
- set{
- grid[(row*columns)+col]=newValue
- }
- }//定义下标
- }
- classSquareMatrix:DoubleDimensionalArray{
- overridesubscript(row:Int,col:Int)->Int{//重写父类下标
- get{
- returnsuper.grid[(row*columns)+col]
- }
- set{
- super.grid[(row*columns)+col]=newValue*newValue
- }
- }
- }
- varary2=SquareMatrix(rows:5,columns:5)
- forvari=0;i<5;i++{
- forvarj=0;j<5;j++{
- ary2[i,j]=i+j
- }
- }
- forvari=0;i<5;i++{
- forvarj=0;j<5;j++{
- print("\t\t\(ary2[i,j])")
- }
- print("\n")
- }
其中super.grid[(row * columns) + col]语句中使用super调用父类的grid属性。
其中super.grid[(row * columns) + col] = newValue * newValue语句是给父类的grid属性赋值。
欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息