swift属性

作者: iOS小乔 | 来源:发表于2015-12-21 11:08 被阅读137次

    swift有三种属性:1、存储属性 2、计算属性 3、类型属性


    • 存储属性

      //1、存储属性
      class Person{
      //常量不可改值,变量可以,存储属性初始化的时候必须给初始值
      var name:String = "张三"
      var height:Double = 1.75
      let life = 1
      
      }
      
      var person1 = Person()
      person1.name = "王二"
      person1.height = 1.81
      println("这个人的姓名是\(person1.name)")
      println(person1.height)
      println(person1.life)
      
    • 计算属性
      //2、计算属性
      class Square{
      var width:Double = 0
      var girth:Double{
      get{
      return width*4
      }

        //1-1、newValue是隐藏属性
        //        set{
      //            girth = newValue / 4
      //        }
        //1-2、也可自己定义赋值
        set(newGirth){
            
           width = newGirth / 4
          }
        }
      }
      var s = Square()
      s.width = 10
      println("这个矩形的周长是\(s.girth)")
      
      var q = Square()
      q.girth = 80
      println("这个矩形的宽为\(q.width)")
      
    • 类型属性

        //3、类型属性
        class Circle{
        //如果不写set方法,只写get方法的话,那么该属性只有get方法
        class var PI: Double {
            return 3.14
        }
      }
      
      var circle1 = Circle.PI * 6
      println("这个圆的周长是\(circle1)")
      
    • 补充

      //延时加载(即何时用到何时加载)可以避免资源的浪费,当一些属性内容中含有太多信息的时候考虑用
      //延时加载不能用于计算属性,也不能用于常量属性
      class Animal{
      
      var name:String = "dog"
      
       lazy var status:String = "这是一个延时加载的属性"
      let life:Double = 1
      class var age:Double{
        get{
            return 20
        }
        set{
            age = newValue * 2
          }
        }
      }
      var animal1 = Animal()
      

    //⚠注意,以下写法会发生死循环

    class Triangle{
        var area:Double {
            get{
                println("get方法被调用")
                return area
            }
            set{
                println("set方法被调用")
                area = newValue
        }
      }
    }
    

    //在一个类对象被创建出来的时候会自动调用init()方法

    class Test {
    
    init(){
        println("Test类创建被调了")
      }
    }
    
    var test = Test()

    相关文章

      网友评论

        本文标题:swift属性

        本文链接:https://www.haomeiwen.com/subject/dpemhttx.html