11.5 Swift重写属性时的限制

/**

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

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

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

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

可以,也就是可以升权。

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

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

*/

class Father {

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

var computeProperty: Int { // 计算属性

get {

return 0

}

// set {

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

// }

}

}

class Child: Father {

/**

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

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

*/

override var storeProperty: Int {

get {

return 0

}

set {

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

}

}

/**

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

*/

override var computeProperty: Int {

get {

return 10

}

set {

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

}

}

}

let ch = Child.init()

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

ch.storeProperty = 100

ch.computeProperty = 200

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...