import UIKit

// 1.一个类中至少有一个指定构造器, 其必须负责初始化类中所有的实例存储属性
// 2.便利构造器属于次要的, 辅助性的构造器
// 3.类中可以不定义便利构造器, 便利构造器必须调用同一个类中的其他构造器完成初始化
// 4.便利构造器的语法格式 convenience init(形参) {}
// 5.只有类中才有便利构造器 // 类的构造器链
// Swift对构造器之间的调用链制定了如下3条规则:
// 1.子类构造器必须调用直接父类的指定构造器(如果有乳类)
// 2.便利构造器必须调用同一个类中的其他构造器
// 3.便利构造器调用的高早期链的最终节点必须是指定构造器 // 简化为:
// 1.指定构造器总是向上代理(调用父类构造器)
// 2.便利构造器总是横向代理(调用当前类的其他构造器) class Person { var name: String!
var weight: Double // 定义指定构造器
init(name: String, weight: Double) {
self.name = name
self.weight = weight
} // 定义便利构造器(使用convenience修饰)
convenience init(n name: String, w weight: Double) {
self.init(name: name, weight: weight)
}
} var p1 = Person(name: "Rinpe", weight: 62.0)
var p2 = Person(n: "Lili", w: 50.0)

  

Swift中的便利构造器和构造器链的更多相关文章

  1. Swift中子类必须包含的构造器和析构器

    import Foundation /* Swift中子类必须包含的构造器 1.Swift允许在父类构造器前添加required关键字, 用于声明所有子类必须包含该required构造器 (如果没有声 ...

  2. Swift中TableViewCell便利构造器写法

    目前为止比较方便的一种方法,如果有更好的写法请通知我,谢谢!

  3. Swift中可能失败的构造器的传播(调用)和重写

    import Foundation /* 可能失败构造器的传播(调用) 1.可能失败的构造器可以调用同一个类中的普通构造器 2.普通构造器不能调用同一个类中的可能失败构造器 3.结构体中, 普通构造器 ...

  4. Swift中的可选链与内存管理(干货系列)

    干货之前:补充一下可选链(optional chain) class A { var p: B? } class B { var p: C? } class C { func cm() -> S ...

  5. Swift 中枚举

    Swift 中枚举高级用法及实践 字数11017 阅读479 评论0 喜欢20 title: "Swift 中枚举高级用法及实践"date: 2015-11-20tags: [AP ...

  6. [翻译]理解Swift中的Optional

    原文出处:Understanding Optionals in Swift 苹果新的Swift编程语言带来了一些新的技巧,能使软件开发比以往更方便.更安全.然而,一个很有力的特性Optional,在你 ...

  7. 一览Swift中的常用关键字

    要学习Swift这门语言,就必须先了解Swift的关键字及对应的解释.这里就列一下在Swift中常用到的关键字. 关键字是类似于标识符的保留字符序列,除非用重音符号(`)将其括起来,否则不能用作标识符 ...

  8. Swift面向对象基础(上)——Swift中的类和结构体(上)

    学习来自<极客学院> import Foundation //1.定义类和结构体 /* [修饰符]calss 类名{ 零到多个构造器 零到多个属性 零到多个方法 零到多个下标 } 修饰符可 ...

  9. Swift面向对象基础(上)——Swift中的枚举

    Swift中枚举 学习笔记来自<极客学院> import Foundation /**********1*Swift定义枚举的语法格式*************/ /* enum 枚举名 ...

随机推荐

  1. php页面显示空白

    问题: 本人php初学者,网站下载wamp5,安装好之后,测试环境是否正常,用phpinfo(),但是页面不能正确显示. 1.显示连接错误 2.显示空白页 解决方法: 一.显示连接错误 步骤: 1.p ...

  2. ios 实时刷新屏幕

    index=; // timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:layer selector:@selector(setNe ...

  3. iScroll 下拉刷新

    <!doctype html> <html> <head> <meta charset="utf-8"> <script ty ...

  4. PreparedStatement可以有效地防止sql被注入

    import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import jav ...

  5. PYTHONE的WHILE,BREAK,CONTINUE示例

    简短示例: while True: s = raw_input('Enter something : ') if s == 'quit': break if len(s) < 3: print ...

  6. QT下int与QByteArray的转换

    int转QByteArray QByteArray intToByte(int i) { QByteArray abyte0; abyte0.resize(4); abyte0[0] = (uchar ...

  7. 位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<)

    原文:位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<) 先知道这两个二进制数据的特点:   1=0000 0000 0000 0000 0000 000 ...

  8. 【HDOJ】1104 Remainder

    bfs. #include <cstdio> #include <cstring> #include <cstdlib> #include <queue> ...

  9. 五大P2P平台费用一览

    我看版上谈P2P的挺多的,正好我也投了点P2P, 今天看到一个不错的图 欢迎版上朋友讨论       -- 不忧不惧

  10. hdu3534,个人认为很经典的树形dp

    题目大意为,求一个树的直径(最长路),以及直径的数量 朴素的dp只能找出某点开始的最长路径,但这个最长路径却不一定是树的直径,本弱先开始就想简单了,一直wa 直到我看了某位大牛的题解... 按照那位大 ...