import Foundation/*
可能失败构造器的传播(调用)
1.可能失败的构造器可以调用同一个类中的普通构造器
2.普通构造器不能调用同一个类中的可能失败构造器
3.结构体中, 普通构造器却可以调用同一个结构体中可能失败的构造器可能失败构造器的重写
1.子类可以用可能失败的构造器或者普通的构造器重写父类中的可能失败的构造器
2.子类的普通构造器不能向上调用父类的可能失败的构造器
3.子类的可能失败的构造器可以调用父类的可能失败的构造器
*/class Person {var name: String = ""// 定义指定构造器init(){}// 定义可能失败构造器init?(name: String) {if !name.isEmpty {self.name = name} else {print("构造失败")return nil}}
}class Man: Person {var sex = "男"// 使用普通构造器重写父类的构造器override init(name: String) {// 由于该构造器是普通构造器, 因此不能调用父类的显式(?)可能失败的构造器// 可以调用父类的隐式(!)可能失败的构造器 或 调用父类中的普通构造器super.init()}// 定义可能失败构造器init!(name: String, sex: String) {// 子类中的可能失败构造器可以调用父类的可能失败构造器super.init(name: name)if sex == "其他" {print("构造失败")return nil}self.sex = sex}
}let p1 = Man(name: "")
print(p1)
let p2 = Man(name: "rinpe", sex: "男")
print(p2 == nil)
let p3 = Man(name: "", sex: "女")
print(p3 == nil)

  

Swift中可能失败的构造器的传播(调用)和重写相关推荐

  1. 关于自定义异常中为什么带参构造器需要显示调用父类异常的带参构造器

    在听课的时候听到自定义异常时,视频上讲的定义异常的时候如果是带参构造器需要显示调用父类异常的带参构造器,原因是什么呢? 首先我们需要看一下Exception和ERROR的父类Throwable的源码: ...

  2. 关于Swift中Struct,Class和Enum的哪些事儿

    前言 Swift type System Swift是强类型的,尽管只有六种类型. 命名类型: protocol, class , struct , enum 复合类型:tuple, function ...

  3. Swift 中的关键字详解

    转载自:https://www.cnblogs.com/liYongJun0526/p/7522130.html 要学习Swift这门语言,就必须先了解Swift的关键字及对应的解释.这里就列一下在S ...

  4. Swift 中使用 SQLite——批量更新(事务处理)

    本文是Swift 中使用 SQLite系列的收官之作,介绍一下在数据库中的批量更新. 事务 在准备做大规模数据操作前,首先开启一个事务,保存操作前的数据库的状态 开始数据操作 如果数据操作成功,提交事 ...

  5. Swift 中使用 SQLite——打开数据库

    关于Swift中使用SQLite,接下来可能会分别从打开.增.删.改.查,几个方面来介绍SQLite的具体使用,这一篇重点介绍一下如何打开. 定义全局数据库访问句柄 /// 全局数据库访问句柄 pri ...

  6. 探索 Swift 中的 MVC-N 模式

    作者:Marcus Zarra(twitter:@mzarra) Marcus 将会为大家介绍一种设计模式,他曾经在那些需要从互联网进行大量频繁数据请求的 iOS 应用当中使用此设计模式.这个设计采用 ...

  7. 怎样在swift中创建CocoaPods

    本文由yake_099(博客)翻译自raywenderlich,作者:Joshua Greene 原文:How to Create CocoaPods with Swift 你可能对一些比较著名的开源 ...

  8. Swift中依赖注入的解耦策略

    原文地址:Dependency Injection Strategies in Swift 简书地址:Swift中依赖注入的解耦策略 今天我们将深入研究Swift中的依赖注入,这是软件开发中最重要的技 ...

  9. Swift 中的 @autoclosure

    由于种种原因,掘金等第三方平台博客不再保证能够同步更新,欢迎移步 GitHub:github.com/kingcos/Per-.谢谢! Date Notes Swift Xcode Source Co ...

  10. Swift41/90Days - 面向轨道编程 - Swift 中的异常处理

    问题 在开发过程中,异常处理算是比较常见的问题了. 举一个比较常见的例子:用户修改注册的邮箱,大概分为以下几个步骤: 接收到一个用户的请求:我要修改邮箱地址 验证一下请求是否合法,将请求进行格式转化 ...

最新文章

  1. Datawhale数据分析教程来了!
  2. JavaSE(九)——正则表达式、Date类、集合、泛型
  3. xp系统怎么关dhcp服务器,怎样解决Win XP操作系统DHCP故障:获取未使用的IP地址
  4. win11提示无法在此配置怎么办 Windows11提示无法在此配置的解决方法
  5. 深度学习网络架构(三):VGG
  6. 区块链开发(三)以太坊客户端命令行选项汇总
  7. db2mysql下载_db2SQL命令
  8. 经验谈:写给新手的反激变压器KRP详解
  9. css span 右端对齐_span右对齐
  10. html表格左边锁定,表头锁定
  11. Vue3中Compositions API的使用(一)
  12. android 手机存储大小设置,如何让手机内存变大?内存不足解决方法【详解】
  13. OpenCV的Rect矩形类简介和使用
  14. 此为四川大学110周年校庆大型文艺晚会朗诵文稿
  15. java nio 学习笔记2
  16. 分治法--处理数列问题
  17. kali linux查看版本,kali linux 系统版本的查看方法
  18. TensorFlow 2.0深度学习算法实战---第13章 生成对抗网络
  19. Apache Cordova development lands on Visual Studio Code
  20. 译——项目管理铁三角(The Iron Triangle of project management)

热门文章

  1. java native方法_深入理解Java虚拟机
  2. Linux6新建分区,centos6中添加一块新的硬盘并分区的方法介绍
  3. PHP树形结构数据增加每层的级别
  4. PHPExcel 导出带生成图片完美案例
  5. LINUX SHELL mkdir建立多级目录
  6. sprintf参数包含本身时,结果并不符合预期
  7. 由于没有公钥,无法验证下列签名
  8. 解决办法:GTK+ 2.x symbols detected
  9. 人都在你手下,难题我解决了,其他活也得我干?
  10. THCudaCheck FAIL file=/pytorch/aten/src/THC/THCGeneral.cpp line=405 error=11 : invalid argument