加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

11.5 Swift重写属性时的限制

发布时间:2020-12-14 06:31:44 所属栏目:百科 来源:网络整理
导读:/** 属性重写的时候都有哪些限制? 1. 属性重写时,只有 set 方法 , 没有 get 方法是否可以, 不可以的,我们马上可以看到, set 和 get 都必须重写; 2. 只读的计算属性是否在重写的时候变成读写计算属性(权利变大); 可以,也就是可以升权。 3. 可读写

/**

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读