重写属性的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
}
注意: 如果写了自定义构造方法, 并且没有重写了父类的构造方法; 那么必须使用自定义的构造方法