swift学习笔记(五)构造过程
构造过程是为了使用某个类、结构体或枚举类型的实例而进行的准备过程。在构造过程中,对每一个属性进行了初始值预设和其它必要的准备和初始化工作。
与OC相比,swift的构造函数。不须要返回值。同一时候,在类和结构体的构造过程中,必须对全部的存储类型属性,包括继承自父类的属性。赋予合适的初始值。存储类型值不能处于一个未知状态。
在对属性进行初始化过程中,有两种方法,第一:使用构造方法,第二:在定义属性时,直接赋予默认值。
当使用构造方法对属性赋值时,不会触发不论什么的属性观測器。
当一个属性总是使用同一个初始值时。能够通过默认值的形式进行赋值。这样能够使构造器更加简洁,同一时候也能够自己主动导出属性的类型。
在构造函数中,是能够对常量属性进行改动的。原则:仅仅要在构造函数结束前,常量值能够确定,就能够在构造函数中随意时间点,对常量进行改动。
能够在构造器中加入參数,參数的数量和类型能够依据详细须要而定。但在每一个制定构造器中,都必须对全部属性进行赋值。
当一个类型有多个制定构造器时,主要通过參数名和类型来确定须要调用的构造器。
所以构造器的外部參数名显得尤为重要。
跟普通函数一样,系统会自己主动为每一个构造器的參数自己主动生成一个跟内部名字同样的外部參数名称。就相当于在构造函数前加入了一个“#”。
假设要去掉这样的默认结构。能够使用“_”来定义自己喜欢的外部參数名。
注意:在调用构造函数时,必需要通过外部參数名称。否则在编译器会报错。
假设一个属性能够为空时。在定义时,能够将其声明为可选属性类型
如:var string:String?
关于默认构造器:
当结构、枚举、类型中的全部属性都已经提供默认值并且自身没有提供不论什么构造函数时,系统会自己主动生成一个构造器。构造器中的全部属性的值都为默认值。
关于指定构造函数和便利构造函数
为了保证类中的全部存储属性,包括继承自父类的属性都有初始值。
swift提供了两种构造函数:指定构造函数和便利构造函数。
每一个类都必须拥有至少一个制定构造器,在init前加入convenience keyword。就可以声明为便利构造函数。
指定构造函数和便利构造函数之间的调用关系。必须遵循下面三种规则:
1.指定构造函数必须调用其直接父类的构造器。即super.init()
2.便利构造函数必须调用同一类中定义的其它构造器。包括制定构造器和便利构造器。
3.便利构造器终于必须以调用一个制定构造器结束。
总结例如以下:制定构造器是向上代理。便利构造器是横向代理。
关于继承和重载;
在子类中。是不会自己主动继承父类的构造器的,须要手动调用,即super。init
重载构造器函数时。不用写overridekeyword
当要为子类引入随意新属性提供默认值时,须遵循下面两条规则:
1.当子类中没有不论什么指定构造器,子类将自己主动继承全部父类的制定构造器。
2.假设子类提供了全部父类制定构造器的实现。无论是通过规则1实现的。还是通过自己定义实现的,它将自己主动继承全部父类的便利构造器。
swift学习笔记(五)构造过程的更多相关文章
- swift学习笔记之-构造过程
//构造过程 import UIKit /* 构造过程(Initialization): 1.构造过程是使用类.结构体或枚举类型的一个实例的准备过程.在新实例可用前必须执行这个过程,具体操作包括设置实 ...
- swift学习笔记之-析构过程
//析构过程deist import UIKit /*析构过程(Deinitialization):析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用.析构器用关键字deinit来标示 ...
- Swift学习笔记五
基础运算符 Swift的大部分运算符和C及OC相同,也分一元二元多元的,这里只记录一些Swift特有的性质或写法. 赋值运算符( = ) 在等号右边是一个有多个值的元组时,它的成员值可以分解并同时分别 ...
- swift学习笔记3——类、结构体、枚举
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- Linux学习笔记(五) 账号管理
1.用户与组账号 用户账号:包括实际人员和逻辑性对象(例如应用程序执行特定工作的账号) 每一个用户账号包含一个唯一的用户 ID 和组 ID 标准用户是系统安装过程中自动创建的用户账号,其中除 root ...
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- C#可扩展编程之MEF学习笔记(五):MEF高级进阶
好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...
- (转)Qt Model/View 学习笔记 (五)——View 类
Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...
- java之jvm学习笔记五(实践写自己的类装载器)
java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...
随机推荐
- Python 爬虫练习: 爬取百度贴吧中的图片
背景:最近开始看一些Python爬虫相关的知识,就在网上找了一些简单已与练习的一些爬虫脚本 实现功能:1,读取用户想要爬取的贴吧 2,读取用户先要爬取某个贴吧的页数范围 3,爬取每个贴吧中用户输入的页 ...
- [luogu] P4823 [TJOI2013]拯救小矮人(贪心)
P4823 [TJOI2013]拯救小矮人 题目描述 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以 ...
- 安装NexT主题
Hexo 安装主题的方式非常简单,只需要将主题文件拷贝至站点目录的 themes 目录下, 然后修改下配置文件即可. 下载主题包 在终端窗口下,定位到 Hexo 站点目录下.使用 Git checko ...
- 文件类似性推断 -- SimHash
近期调研了一下simhash算法,它主要用在谷歌网页去重中.网上有非常多原理性的介绍. 既然能够用来推断文件的相似性,就想知道效果怎么样.simhash的准确度是否依赖于分词算法?是否和simhash ...
- intellij idea 13&14 插件推荐及高速上手建议 (已更新!)
早些年 在外企的时候,公司用的是intellij idea ,当时也是从eclipse.MyEclipse转过去的非常是不习惯. 用了一周明显感觉爱上它了.由于它非常智能,并且能纠正你非常多不好的习惯 ...
- js算法:分治法-棋盘覆盖
在一个 2^k * 2^k 个方格组成的棋盘中,若恰有一个方格与其他方格不同.则称该方格为一特殊方格,称该棋盘为一特殊棋盘.显然特殊方格在棋盘上出现的位置有 4^k 种情形.因而对不论什么 k> ...
- [luogu P4197] Peaks 解题报告(在线:kruskal重构树+主席树 离线:主席树+线段树合并)
题目链接: https://www.luogu.org/problemnew/show/P4197 题目: 在Bytemountains有N座山峰,每座山峰有他的高度$h_i$.有些山峰之间有双向道路 ...
- void空类型指针
; double db = 120.3; void *p; p = # cout << *(int *)p << endl;//转换成int类型的指针,再取值 ...
- javax.validation注解使用
@Pattern(regexp = "^[0-9]*$",message = "完成比例(进度)必须是数字")
- KafkaZookeeper2-ZookeeperClient
介绍 ZookeeperClient 是 kafka 新写的客户端,它允许用户流水线式(并行)访问 zookeeper. 为什么放弃了 zkClient? zkClient 是一个第三方的客户端. 它 ...