iOS swift学习之入门详解(对象和类)
来源:互联网 发布:蛆恶心 知乎 编辑:程序博客网 时间:2024/05/16 11:17
定义类class Dog { let name = "wang wang" var age = 0 func talk(){ print("我是一只单身狗") }}使用类如下:let dog=Dog()dog.age = 10dog.talk()可以看到,Swift相比ObjC回归正常了,类是class而不是interface了。类里的成员变量或常量就是类的属性,不用像ObjC那样以@property开头了。定义属性时可以直接赋初始值。定义成员函数与定义全局函数在语法上并没有半毛区别。创建类的实例时,其语法跟ObjC之外的语言一致了,通过“()”里的参数对应某个构造方法。我们没有为上面的类提供额外的构造方法,所以使用了默认的构造方法(没有任何参数的那个)。不论是使用属性还是调用成员(方法)函数,都用点即可。类不必有父类,这点与ObjC不同,ObjC的类必须直接或间接从NSObject派生。构造方法构造方法的名字都叫“init”。class Dog { let name:String var age:Int init(){ self.name = "wang wang" self.age = 10 } init(name:String,age:Int){ self.name = name self.age = age } func talk(){ print("我是一只单身狗") }}增加了2个构造方法,把属性的初始化移到构造方法中了,这跟上一个例子的初始化方式实质上没有区别。注意常量属性只能在构造方法中初始化一次。到底是使用哪个构造方法来初始化,这得看在创建类实例时传的参数。每个属性必须都要进行初始化。可以在声明它时,也可以在构造方法中。self代表实例自身,相当于其它语言里的this。析构方法与构造方法对应,析构方法叫做“deinit”。在实例要被销毁前被调用。里面可以做一些清理工作。析构方法只能有一个且没有参数。例如:class Dog { let name:String var age:Int init(){ self.name = "wang wang" self.age = 10 } init(name:String,age:Int){ self.name = name self.age = age } //析构方法,因为不需要参数,因此连“()”都不能带了 deinit{ print("看到这句话,就是我的死期,永别了世界") } func talk(){ print("我是一只单身狗") }}继承//撸码狗class CodingDog : Dog{ var codingYears:Double //构造方法 init(name:String,age:Int,codingYears:Double){ self.codingYears=codingYears super.init(name: name, age: age) } //重写了父类的方法 override func talk(){ print("我是一只撸码狗") }}
0 0
- iOS swift学习之入门详解(对象和类)
- iOS swift学习之入门详解(getter和setter)
- iOS swift学习之入门详解(枚举和结构)
- iOS swift学习之入门详解(协议和扩展)
- iOS swift学习之入门详解(函数)
- Swift快速入门之对象和类
- iOS swift学习之入门详解(swfit的介绍)
- iOS swift学习之入门详解(分支循环)
- iOS swift学习之入门详解(可选类型错误处理)
- Swift学习小结之对象和类
- Swift学习之路 -- 对象和类
- iOS swift学习之入门详解(延迟调用与范型)
- 职群教育 | IOS开发 Swift语言入门(四):对象和类
- iOS概念入门学习-OC-类和对象
- [ios]Swift之?和!
- Swift语言学习3--对象和类
- Swift 学习笔记 5-对象和类
- Swift学习笔记 -- 对象和类
- 如何用PDF Transformer+来简化PDF处理过程
- SQL Server与SQL Server Express的区别
- 【教程】【多图详解】如何在Eclipse中离线安装ADT(Android Development Tools)
- 字符串转LinkList
- NoSQL basic knowledge
- iOS swift学习之入门详解(对象和类)
- 同步和异步的区别
- 【S2HS学习笔记】第二章节:JSP/Servlet及相关技术详解
- 开源Android-PullToRefresh下拉刷新源码分析
- android 自定义控件属性
- XML(1)Java解析XML的四种方法
- Erlang NIF简析
- 124.Perfect Squares
- CocosPod系统升级bug