import Foundation

/*
Swift中子类必须包含的构造器
1.Swift允许在父类构造器前添加required关键字, 用于声明所有子类必须包含该required构造器
(如果没有声明, 子类中默认会自动包含), 至于要怎么实现父类中required构造器, 没有特殊要求
可以通过便利构造器实现, 也可以通过普通构造器实现
2.父类中声明的required构造器既可以是指定构造器, 也可以是便利构造器 Swift中子类必须包含的析构器(用于在对象释放之前进行资源释放, 对象会在析构器执行完之后才销毁)
1.析构器是一个名为deinit的函数, 不需要使用func关键字, 无参数和返回值
2.析构器在实例释放之前由系统自动调用, 不要主动调用析构器
3.子类自动继承父类的析构器, 而且无论如何, 子类析构器一定会调用父类析构器
*/ class Person
{
var name: String?
var weight: Double? required init(name: String, weight: Double)
{
self.name = name
self.weight = weight
} required convenience init(name: String)
{
self.init(name:name, weight:0.0)
} deinit
{
print("程序准备释放Person")
}
} class Man: Person
{
required init(name: String)
{
super.init(name: name, weight: 0.0)
} required convenience init(name: String, weight: Double)
{
self.init(name: name)
} deinit
{
print("程序准备释放Man")
}
} class Woman: Person
{ } var man:Man? = Man(name: "Rinpe")
print(man)
var man2 = Man(name: "lala", weight: 0.0)
print(man2) var woman = Woman(name: "lili", weight: 0.0)
print(woman) man = nil

  

Swift中子类必须包含的构造器和析构器的更多相关文章

  1. Python构造器及析构器:__init__与__new__及__del__

    __init__与__new__这两个魔法方法组成了Python类对象的构造器,在Python类实例化时,其实最先调用的不是__init__而是__new__.__new__是负责实例化对象的,而__ ...

  2. 【iOS】Swift类的继承、构造方法、析构器等复习

    一.继承与重写, 防止重写 1.1 基类, 不继承任何类. Swift不想OC或者Java中继承自Object类.定义一个类,不继承任何类,该类就是基类. [java] view plaincopy ...

  3. swift 学习- 17 -- 析构器

    // 析构器 只适用与 类类型, 当一个类的实例被释放之前, 析构器会被立即调用, 析构器用关键字 deinit 来标示, 类似于构造器要用 init 来标示 // 析构过程原理 // Swift 会 ...

  4. Swift中构造器的继承和重写

    import Foundation /* 构造器的继承: Swift的子类不会自动继承父类的构造器, 若继承, 则满足如下规则: 1.如果子类没有提供任何指定构造器, 那么它将自动继承父类的所有指定构 ...

  5. Swift中的便利构造器和构造器链

    import UIKit // 1.一个类中至少有一个指定构造器, 其必须负责初始化类中所有的实例存储属性 // 2.便利构造器属于次要的, 辅助性的构造器 // 3.类中可以不定义便利构造器, 便利 ...

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

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

  7. swift中文文档- 类型转换

    未翻译完 待续(英语烂,求斧正) Type Casting 类型转换 Type casting is a way to check the type of an instance, and/or to ...

  8. 谈Swift中的访问控制

    访问控制(Access Control) 访问控制可以限定其他源文件或模块中的代码对你的代码的访问级别.这个特性可以让我们隐藏代码的一些实现细节,并且可以指定一些代码和访问和使用的优先接口. 你可以明 ...

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

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

随机推荐

  1. JS encode decode

    网上查到的全都是escape,和需要的编码不是一回事,好不容易找到的结果 保存下来以备以后使用 js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent, ...

  2. Python学习笔记整理(十)Python的if测试

    if语句是选取要执行的操作. 一.if语句 1.通用格式 形式是if测试,后面跟着一个或多个可选的elif(else if)测试,以及一个最终选用的else块.测试和else部分可以结合嵌套语句块,缩 ...

  3. grunt serve Warning: Running "sass:server" (sass) task

    使用grunt serve运行时遇到一问题: y@y:ydkt$ grunt serve Running "serve" task Running "clean:serv ...

  4. 游览器保存密码和自动填充密码的困惑 (browser save password and auto fill password )

    原文 refer : http://www.cnblogs.com/happyfreelife/p/4240100.html 当一个带有username and password 的表单被提交, 游览 ...

  5. Entity Framework with MySQL 学习笔记一(关系整理版)

    1-1 设置 //DataAnnotation 1-1 | 1-0 table //SQLtable : member , columns : memberId, name //SQL basic l ...

  6. mkbundle(1) - Linux man page

    mkbundle(1) - Linux man page Name mkbundle, mkbundle2 - Creates a bundled executable. Synopsis mkbun ...

  7. COJ WZJ的数据结构(负十八)splay_tree的天堂

    WZJ的数据结构(负十八) 难度级别:E: 运行时间限制:100000ms: 运行空间限制:700KB: 代码长度限制:2000000B 试题描述 对于前一段样例: 输入 输入文件的第1行包含两个数N ...

  8. Android数据存储三剑客——SharedPreferences、File、SQLite

    Android中常用的数据存储一般有三种方式:SharedPreferences.文件和SQLite数据库,用来保存需要长时间保存的数据.本文将通过几个具体的小实例来讲解这三种方式的具体实现. 数据存 ...

  9. Java & Android Interviews #1

    1.GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供 ...

  10. DPDK2.1开发者手册4-7

    Mempool Labrary 一个内存池(memory pool)就是固定大小对象的分配器.在dpdk中,它是通过名字来标示唯一性的,且使用环形队列来保存没有使用的空闲对象.它提供了一些可选项服务例 ...