/// 类中如果有非可选属性,需要进行处理;要么声明的时候就直接初始化,要么提供初始化方法来初始化声明的非可选变量
class Animal: NSObject {
/// 存储属性:值的获取和存储通过自身完成,不依赖其他的变量
// 名字
var name: String, // 提供初始化方法进行初始化
age: Int = 0 // 声明的时候直接初始化
// 可选属性没有初始化默认值是 nil
var address: String?,
postCode: Int?
/// 计算属性(读、写):不通过变量自己本身进行值的获取和存储,值的获取和存储依赖其他变量,计算属性需要声明类型,同时,计算属性不能使用 let 关键字
var virtualAge: Int {
get {
return age
}
// 可以声明一个变量,也可以不声明变量,使用 `newValue` 代替
// set (myValue) {
// age = myValue * 4
//}
set {
age = newValue * 4
}
}
/// 计算属性(只读),计算属性需要声明类型
var actualAge: Int {
get {
return age * 8
}
}
/// 计算属性(只读),计算属性需要声明类型
/// 省略 get
var virtual: Int {
return age * 8
}
/// 计算属性(只读),计算属性需要声明类型
/// 省略 return
var actual: Int {
age * 8
}
// 初始化方法
init(_ nameStr: String) {
self.name = nameStr
}
}
计算属性跟存储属性的区别:
- 计算属性值的获取跟存储不是由自身完成的,需要其他的存储属性。即计算属性本身是不能存储属性的;
- 存储属性值的存储通过自身就可以完成;
网友评论