11.5 Swift重写属性时的限制

前端之家收集整理的这篇文章主要介绍了11.5 Swift重写属性时的限制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_502_2@/**@H_502_2@

@H_502_2@属性重写的时候都有哪些限制?@H_502_2@

1.@H_502_2@属性重写时,只有@H_502_2@set@H_502_2@方法@H_502_2@ @H_502_2@,@H_502_2@ @H_502_2@没有@H_502_2@get@H_502_2@方法是否可以,@H_502_2@

@H_502_2@不可以的,我们马上可以看到,@H_502_2@set @H_502_2@和@H_502_2@ get@H_502_2@都必须重写;@H_502_2@

@H_502_2@

2.@H_502_2@只读的计算属性是否在重写的时候变成读写计算属性(权利变大);@H_502_2@

@H_502_2@可以,也就是可以升权。@H_502_2@

3.@H_502_2@可读写的计算@H_502_2@/@H_502_2@存储属性是否可以重写为只读的计算属性(权利变小);@H_502_2@

@H_502_2@不可以,也就是不可以降权。@H_502_2@

*/@H_502_2@

@H_502_2@

@H_502_2@class@H_502_2@ Father {@H_502_2@

@H_502_2@var@H_502_2@ storeProperty: @H_502_2@Int@H_502_2@ = @H_502_2@0@H_502_2@ @H_502_2@// @H_502_2@存储属性@H_502_2@

@H_502_2@var@H_502_2@ computeProperty: @H_502_2@Int@H_502_2@ { @H_502_2@// @H_502_2@计算属性@H_502_2@

@H_502_2@get@H_502_2@ {@H_502_2@

@H_502_2@return@H_502_2@ @H_502_2@0@H_502_2@

}@H_502_2@

@H_502_2@

// set {@H_502_2@

// print("In FatherClass: set\(newValue)")@H_502_2@

// }@H_502_2@

}@H_502_2@

}@H_502_2@

@H_502_2@

@H_502_2@

@H_502_2@class@H_502_2@ Child: @H_502_2@Father@H_502_2@ {@H_502_2@

@H_502_2@

@H_502_2@/**@H_502_2@

@H_502_2@可以将一个父类的存储属性重写成计算属性@H_502_2@,@H_502_2@

@H_502_2@不可以将一个父类的存储属性再重写成存储属性。@H_502_2@

*/@H_502_2@

@H_502_2@override@H_502_2@ @H_502_2@var@H_502_2@ storeProperty: @H_502_2@ Int@H_502_2@ {@H_502_2@

@H_502_2@get@H_502_2@ {@H_502_2@

@H_502_2@return@H_502_2@ @H_502_2@0@H_502_2@

}@H_502_2@

@H_502_2@

@H_502_2@set@H_502_2@ {@H_502_2@

@H_502_2@print@H_502_2@(@H_502_2@"In ChildClass set: storeProperty with value @H_502_2@\@H_502_2@(@H_502_2@newValue@H_502_2@)"@H_502_2@)@H_502_2@

}@H_502_2@

}@H_502_2@

@H_502_2@/**@H_502_2@

@H_502_2@可以将父类中的技术属性重写,重写的样式也是计算属性@H_502_2@

*/@H_502_2@

@H_502_2@override@H_502_2@ @H_502_2@var@H_502_2@ computeProperty: @H_502_2@ Int@H_502_2@ {@H_502_2@

@H_502_2@get@H_502_2@ {@H_502_2@

@H_502_2@return@H_502_2@ @H_502_2@10@H_502_2@

}@H_502_2@

@H_502_2@

@H_502_2@set@H_502_2@ {@H_502_2@

@H_502_2@print@H_502_2@(@H_502_2@"In ChildClass set: coputeProperty with value @H_502_2@\@H_502_2@(@H_502_2@newValue@H_502_2@)"@H_502_2@)@H_502_2@

}@H_502_2@

}@H_502_2@

@H_502_2@

}@H_502_2@

@H_502_2@

@H_502_2@

@H_502_2@let@H_502_2@ ch = @H_502_2@Child@H_502_2@.@H_502_2@init@H_502_2@()@H_502_2@

@H_502_2@

@H_502_2@ // @H_502_2@通过子类的对象来调用重写后的属性或者方法,肯定会调用子类中的重写版本@H_502_2@

@H_502_2@

ch.@H_502_2@storeProperty@H_502_2@ = @H_502_2@100@H_502_2@

ch.@H_502_2@computeProperty@H_502_2@ = @H_502_2@200@H_502_2@

猜你在找的Swift相关文章