Getter/Setter以及构造方法

重写属性的getter/setter方法

  • 示例1 :
    var _name: String?
    var name: String?{
    get{
    return _name
    }
    set{
    _name = newValue // 只要外界通过对象给name赋值, 值就会保存在newValue中
    }
    }
  • 示例2 :
    var gender: String?{
    // didSet方法在属性设置完值之后调用, swift中使用didSet方法来代替setter方法
    didSet{
    // 代码块
    }
    }
  • 示例3 :
    var age: Int{
    get{
    return 30 // 如果在一个属性中, 只重写了get方法, 那么我们称之为计算型属性(只读属性), 且计算型属性不占用内存空间
    }
    }

备注: 命名空间

在Swift中, 如果想使用某一个类, 是不用import头文件的; 因为Swift中新增一个"命名空间"的概念, 只要是在同一个命名空间的文件, 资源都是共享的; 默认情况下项目名称就是命名空间(查看命名空间可以print(self))

Swift中的构造方法:

  • 注意
    1.如果定义一个属性的时候没有初始化, 那么必须在后面加上一个?
    2.Swift要求属性是必须有初始值的
    3.只要在构造方法中对属性进行初始化, 那么属性的后面可以不写?
  • 自定义构造方法 (Swift中有方法重载的概念, 允许有同名的方法, 只要形参或者返回值不同即可)
    var name: String?
    var age: Int = 0
    // 如果定义了一个"对象属性", 那么后面可以写上?
    // 如果是定义一个"基本的数据类型", 那么最后直接赋值为0
    // 因为super.init()方法在分配内存空间的时候, 当发现一个属性是可选类型, 并且是对象的时候, 会给其分配内存空间; 如果发现一个属性是可选类型, 但是基本数据类型的时候, 就不会给该属性分配存储空间, 这个时候可能会使程序crash掉
    init(name: String, age: Int){
    self.name = name
    self.age = age
    }
    注意: 如果写了自定义构造方法, 并且没有重写了父类的构造方法; 那么必须使用自定义的构造方法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容