您的位置:首页 > 移动开发 > Swift

Swift -- 属性

2015-11-06 21:32 323 查看
//swift中声明类 用class

    /*swift中属性有两种,存储属性 和 计算属性, 存储属性就是存储在对象(实例)中的一个变量或者常量

        存储属性类似于其他面向对象语言中的成员变量

    */

        class student {

            

            var name = "tony"

            var age = 13

            let grade = 3

            

        }

        

    //系统并不会自动初始化上面的3个存储属性,需要进行手动初始化

    //直接通过点运算符(.),就可以读写某个对象的存储属性

        let stu = student()

        print("name = \(stu.name)")

        print("age = \(stu.age)")

    //延迟存储属性:第一次使用时才进行初始化的属性, 用lazy来标识一个延迟存储属性, 延迟存储属性必须是变量,不能是常量

        

        class tea {

            

            var name = "teatea"

        }

        

        class teacher {

            

            lazy var tea1 : tea = tea()

            

        }

        

        let teacher1 = teacher()

        print("\(teacher1.tea1)")//此时才会初始化tea属性

    

        

        /*计算属性(用get set 存值取值)

        1.因为计算属性的值不是固定的,因此只能用var修饰计算属性,不能用let

        2.

        */

        

        class Square {

            

            var width : Double = 4.0

            

            var circle: Double {

                get {

                    

                    return width * 4

                    

                }

                

                set(newValue) {

                    

                    width = newValue / 4

                    

                }

            

            }

        

        }

        let s2 = Square()

            s2.width = 10

        print(s2.width)

        

        s2.circle = 100

        print(s2.width)

        

        /*类型属性:一个类只会有一份,类的多个实例对象都共享这唯一的一份

        什么是类型属性

        用class关键字修饰的属性,就是类型属性,也可以称为“类属性”

        class修饰的类型属性只能是计算属性,不能是存储属性

        */

        

        class number {

            

            class var age : Int {

                

                return 20

            }

        }

        //直接使用,不依赖于类名而存在

        print(number.age)

        

        /*

        属性监视器:计算属性可以直接在set方法中监视,存储属性中用willSet 和 didSet两个属性监视器

        willSet:在设置新的属性值之前调用,会将新的属性值作为参数传入,参数名默认是newValue

        didSet:在设置新的属性值之后调用,会将旧的属性值作为参数传入,参数名默认是oldValue

        使用注意:willSet和didSet在属性初始化过程中不会被调用,只会当属性的值在初始化之外的地方被设置时被调用,并且willSet、didSet和set、get不能共存

        

        */

        

        class school{

            

            var history: Int = 120 {

            

                willSet{

                    

                    print("------\(newValue)")

                }

                didSet {

                    

                    print("--------\(oldValue)")

                }

            

            }

        }

        

        let sch = school()

        sch.history = 30
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息