首页 / IOS-SWIFT / swift入门->类
swift入门->类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了swift入门->类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1887字,纯文字阅读大概需要3分钟。
内容图文
![swift入门->类](/upload/InfoBanner/zyjiaocheng/1066/bbc1514b9a284481aaa2edb910a6693b.jpg)
swift中类的定义方式
class 类名{
属性。。。
方法。。。
}
类是一个引用类型,其实例是分配到堆中 来看看类里面的属性方法有何不同之处
类中的属性分为存储属性,计算属性
存储属性可以有属性观察器 但计算属性没有 (计算属性在类被继承之后可以添加观察者)
计算属性拥有get set 方法
class Person { // 属性,方法,构造函数,析构函数,,索引器(subscript) // stored properties computed properties var p1 = 20//属性观察器 property observer var name = "swift" { willSet{ //在赋值前会调用willSet里面的内容 // print("before") print(newValue) //新值 // print(name) } didSet(old){ print("after") print(old) print(name); } } var p2 = 30//计算属性 ,get set //不能只有set,只有get的时候,表示只读计算属性,可以简写 //计算属性是没有属性观察者 var age:Int { get{ return100 } set{ } } var readOnlyAge:Int { get{ return100 } //当只有get属性时推断为只读属性,get可以省去 如下 } var readOnlyAge2:Int { //code. //code。return100 } // func m() { //// } //构造函数,可以有多个 init(){ print("init") } //// deinit { // print("deinit") // } // }
代码上已经能看到两种属性的写法,方法函数与函数篇写的一样 没有什么区别
值得注意的是 在类的实例化(初始化)时,所有属性都必须有值 否则会出错
恒等于 :三个等号是判断两个变量是否指向同一个对象
class test{ let a:Int=4 } var aa=test() var bb=test() aa==bb//报错 aa===bb//false aa=bb aa===bb//true
修饰
1修饰为静态,可以用class和static
2存储属性,只能用static,计算属性两个关键字都可以
3方法也是两个关键字都可以
4区别:class修饰的表示子类是可以重写这些静态成员
class Image{ static var name = "my"//class var name2 = "aaa"//存储属性不能用class修饰static var Age:Int { get{ return100 }set{ } } static func someMethod() { // 静态方法中得self不是指的类的实例,而是指类本身 //self //self.Age = } class func someMethod2(){ } }
下标subscript
class XiangCe { var images = [1,2,3,4] //下标 subscript,可以有多个参数 subscript(index: Int) ->Int { get{ return images[index] } set{ images[index] = newValue } } func getImage(index: Int)->Int { return images[index] } } let xc = XiangCe() xc.getImage(0) xc[0] xc[0] = 100 xc[0]
lazy 延迟加载
当属性加上lazy修饰时 在实例化对象时该属性不会初始化,直到调用该属性时才会进行初始化
下面这个例子能看出lazy的作用
class A{ init(){ print( " a init " ) } } class B { lazy var p = A() } let b = B() //b.p
实例化B类时没有输出 a init 而访问B类中的P属性时输出了 说明它在访问的时候才进行初始化工作
原文:http://www.cnblogs.com/pengser/p/4970031.html
内容总结
以上是互联网集市为您收集整理的swift入门->类全部内容,希望文章能够帮你解决swift入门->类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。