Swift -- 属性
2015-11-06 21:32
323 查看
//swift中声明类 用class
/*swift中属性有两种,存储属性 和 计算属性, 存储属性就是存储在对象(实例)中的一个变量或者常量
存储属性类似于其他面向对象语言中的成员变量
*/
class student {
var name = "tony"
var age = 13
let grade = 3
}
//系统并不会自动初始化上面的3个存储属性,需要进行手动初始化
//直接通过点运算符(.),就可以读写某个对象的存储属性
let stu = student()
print("name = \(stu.name)")
print("age = \(stu.age)")
//延迟存储属性:第一次使用时才进行初始化的属性, 用lazy来标识一个延迟存储属性, 延迟存储属性必须是变量,不能是常量
class tea {
var name = "teatea"
}
class teacher {
lazy var tea1 : tea = tea()
}
let teacher1 = teacher()
print("\(teacher1.tea1)")//此时才会初始化tea属性
/*计算属性(用get set 存值取值)
1.因为计算属性的值不是固定的,因此只能用var修饰计算属性,不能用let
2.
*/
class Square {
var width : Double = 4.0
var circle: Double {
get {
return width * 4
}
set(newValue) {
width = newValue / 4
}
}
}
let s2 = Square()
s2.width = 10
print(s2.width)
s2.circle = 100
print(s2.width)
/*类型属性:一个类只会有一份,类的多个实例对象都共享这唯一的一份
什么是类型属性
用class关键字修饰的属性,就是类型属性,也可以称为“类属性”
class修饰的类型属性只能是计算属性,不能是存储属性
*/
class number {
class var age : Int {
return 20
}
}
//直接使用,不依赖于类名而存在
print(number.age)
/*
属性监视器:计算属性可以直接在set方法中监视,存储属性中用willSet 和 didSet两个属性监视器
willSet:在设置新的属性值之前调用,会将新的属性值作为参数传入,参数名默认是newValue
didSet:在设置新的属性值之后调用,会将旧的属性值作为参数传入,参数名默认是oldValue
使用注意:willSet和didSet在属性初始化过程中不会被调用,只会当属性的值在初始化之外的地方被设置时被调用,并且willSet、didSet和set、get不能共存
*/
class school{
var history: Int = 120 {
willSet{
print("------\(newValue)")
}
didSet {
print("--------\(oldValue)")
}
}
}
let sch = school()
sch.history = 30
/*swift中属性有两种,存储属性 和 计算属性, 存储属性就是存储在对象(实例)中的一个变量或者常量
存储属性类似于其他面向对象语言中的成员变量
*/
class student {
var name = "tony"
var age = 13
let grade = 3
}
//系统并不会自动初始化上面的3个存储属性,需要进行手动初始化
//直接通过点运算符(.),就可以读写某个对象的存储属性
let stu = student()
print("name = \(stu.name)")
print("age = \(stu.age)")
//延迟存储属性:第一次使用时才进行初始化的属性, 用lazy来标识一个延迟存储属性, 延迟存储属性必须是变量,不能是常量
class tea {
var name = "teatea"
}
class teacher {
lazy var tea1 : tea = tea()
}
let teacher1 = teacher()
print("\(teacher1.tea1)")//此时才会初始化tea属性
/*计算属性(用get set 存值取值)
1.因为计算属性的值不是固定的,因此只能用var修饰计算属性,不能用let
2.
*/
class Square {
var width : Double = 4.0
var circle: Double {
get {
return width * 4
}
set(newValue) {
width = newValue / 4
}
}
}
let s2 = Square()
s2.width = 10
print(s2.width)
s2.circle = 100
print(s2.width)
/*类型属性:一个类只会有一份,类的多个实例对象都共享这唯一的一份
什么是类型属性
用class关键字修饰的属性,就是类型属性,也可以称为“类属性”
class修饰的类型属性只能是计算属性,不能是存储属性
*/
class number {
class var age : Int {
return 20
}
}
//直接使用,不依赖于类名而存在
print(number.age)
/*
属性监视器:计算属性可以直接在set方法中监视,存储属性中用willSet 和 didSet两个属性监视器
willSet:在设置新的属性值之前调用,会将新的属性值作为参数传入,参数名默认是newValue
didSet:在设置新的属性值之后调用,会将旧的属性值作为参数传入,参数名默认是oldValue
使用注意:willSet和didSet在属性初始化过程中不会被调用,只会当属性的值在初始化之外的地方被设置时被调用,并且willSet、didSet和set、get不能共存
*/
class school{
var history: Int = 120 {
willSet{
print("------\(newValue)")
}
didSet {
print("--------\(oldValue)")
}
}
}
let sch = school()
sch.history = 30
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- Apple Swift学习教程
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- DOM2非标准但却支持很好的几个属性小结
- Ruby简洁学习笔记(二):类继承、属性、类变量
- Delphi控件ListView的属性及使用方法详解
- C#实现获取不同对象中名称相同属性的方法
- PowerShell中Get-Date对象的常用属性和方法介绍
- Windows Powershell属性:描述对象是什么
- DIV+CSS经常用到的属性、参数及说明
- CSS 关于网页图片的属性
- C#实现ProperTyGrid自定义属性的方法
- C#属性(Attribute)用法实例解析
- C#使用shell32获取文件属性的方法