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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值