类型属性:
- 使用关键字 static 来定义 结构体、枚举、类 都可以定义类型属性 (在为类定义类型属性时 可以使用关键字 class 来代替
static 关键字 )
结构体类型属性的语法格式
struct 结构体名 {
static var 存储属性 = "xxxx"
static var 计算属性名 : 属性数据类型 {
return 计算后的属性值
}
}
代码示例
struct Stu{
var livingCost = 0.0
static var tuition : Double = 12000
static var tuitionProp : Double {
return tuition - 1000
}
var totalCost : Double {
return Stu.tuition + livingCost
}
}
//访问静态属性
Stu.tuition
//访问实例属性
var stu1 = Stu()
stu1.livingCost = 2000
stu1.totalCost
枚举类型属性的语法格式
enum 枚举名 {
static var 存储属性 = "XXX"
static var 计算属性名 : 属性数据类型 {
return 计算后的属性值
}
}
代码示例
enum Student {
case iOS
case Android
case Java
case html5
static var tuition : Double = 12000
static var tuitionProp : Double {
return tuition + 111
}
var instanceProp : Double {
switch self {
case .iOS:
Student.tuition = 11668
case .Android:
Student.tuition = 12668
case .Java:
Student.tuition = 13668
case .html5:
Student.tuition = 14668
}
return Student.tuition - 1000
}
}
//访问静态属性
Student.tuition
Student.tuitionProp
//访问实例属性
let stu = Student.iOS
stu.instanceProp
类 类型属性的语法格式
class 类名 {
static var 存储属性 = "XXX"
static var 计算属性 : 属性数据类型 {
return 技术后的属性值
}
class var 子类对父类实现支持重写 : 属性数据类型 {
return 重写后属性值
}
}
代码示例
class person {
var name = "小明"
}
class p1 : person {
static var height = 180
static var weight : String {
return "80Kg"
}
class var age: Int {
return 18
}
class var name: String {
return "王二小"
}
var gender : String?
}
//通过静态属性访问
p1.height
p1.weight
p1.age
p1.name
//通过实例属性访问
let p = p1()
p.gender = "男"