1.类的属性:

2.类的方法:

3.类作为引用类型:

“Swift新增了一对操作符 === 与 !== 用于判定同一个类的两个对象引用是否指向同一对象实例。”

摘录来自: “大话Swift 4.0”。 iBooks.

4.继承:

添加 final 关键字,如果对一个用 final 所修饰的类进行继承,那么编译器就会直接报错。
当然,我们也可以用 final 关键字去修饰一个类中的方法,使得它不允许被其子类重写。

5.对属性的继承:

“当子类B重写了父类A的某一存储式实例属性的属性观察者之后,
我们用类B的对象实例修改该属性时,先调用子类B的 willSet 方法,再调用父类A的 willSet 方法,
随后调用父类A的 didSet 方法,最后调用子类B的 didSet 方法。即便在类B中使用 super 来访问该属性,” 摘录来自: “大话Swift 4.0”。 iBooks.

6.对方法的继承:

7.对下标的继承:

/// 定义类Father
class Father {
 
/// 定义存储式实例属性member
var member =
 
/// 定义下标,参数为Int类型
subscript(index: Int) -> Int {
return index + member
}
 
/// 定义下标,参数为String类型
subscript(str: String) -> Int {
return str.characters.count + member
}
}
 
/// 定义了类Child,继承了Father类
class Child: Father {
 
/// 重写参数类型为Int的下标
override subscript(index: Int) -> Int {
return index - member
}
 
/// 重写参数类型为String的下标,
/// 并且使得Child的子类将不能重写此下标
override final subscript(str: String) -> Int {
return str.characters.count - member
}
}
 
// 这里声明了Father类型的对象引用ref,
// 并且用Child对象实例为它初始化
let ref: Father = Child()
 
// 这里访问的是Child类的下标实现,
// value的值为9
var value = ref[]
print("value = \(value)")
 
// 这里访问的是Child类的下标实现,
// value的值为2
value = ref["abc"]
print("value = \(value)")

8.类的初始化器方法:

便利初始化器方法中,如果没有指定的初始化器方法,不能对未被初始化的存储式实例属性进行访问。

9.初始化器方法的继承与重写:

10.必须实现的初始化器方法:

一旦父类的某个指定的初始化器方法前加上了 required 关键字,
那么子类必须重写该指定的初始化器方法,在重写该初始化器方法时,无需使用 override 关键字,
而直接使用 required 关键字,因为 required 已经包含了 override 的语义。

11.类的析构器仿方法:

析构器方法的调用次序,即先调用当前类的析构器方法,
再调用其父类的析构器方法。

12.类与协议的组合:

13.类遵循协议时的更多特性:

“一个协议如果既可用于结构体与枚举类型,也能用于类类型,那么当在里面声明了一个 mutating 实例方法时,
一个类遵循该协议之后,对此 mutating 方法的实现不需要加 mutating 关键字。
因为类的实例方法没有 mutating 这个概念,它本身就是引用类型,所以也没有所谓的“写时拷贝”机制。
” 摘录来自: “大话Swift 4.0”。 iBooks.
“协议中如果要声明类型方法,则只能使用 static 关键字进行声明,而不能使用 class 关键字,
无论它是否被 class 限定,不过类在遵循该协议并实现该类型方法时,
仍然可以使用 class 关键字表示其子类可以重写该类型方法。
” 摘录来自: “大话Swift 4.0”。 iBooks.

Swift4.0复习类的更多相关文章

  1. Swift4.0复习特性、编译标志和检查API的可用性

    1.Swift中的特性: @引出,后面紧跟特性名,圆括号带参数即可. @attribute(args) avaiable: 指明对象,函数,类型的可用性. @available(iOS 10.0, m ...

  2. Swift4.0复习访问控制与作用域

    1.访问等级: open: 可以继承,可以重写. public: “public 访问等级能用于修饰所有文件作用域的函数.对象.协议.枚举.结构体.类以及各种类型中的属性与方法.用 public 所修 ...

  3. Swift4.0复习类型定义、类型投射等操作

    1.类型定义: /// 这里将MyInt定义为Int32类型 typealias MyInt = Int32   /// 这里将MyArrayInt定义为[MyInt]数组类型 typealias M ...

  4. Swift4.0复习协议

    1.协议的定义: /// 定义一个协议MyProt protocol MyProt {   /// 声明了一个实例方法foo, /// 其类型为:() -> Void func foo()   ...

  5. Swift4.0复习结构体

    1.基本语法: /** 定义了一个结构体 */ struct Structure {   /// 一个常量存储式实例属性, /// 并直接为它初始化 let constProperty =   /// ...

  6. Swift4.0复习Optional

    1.Optional基本使用: 当我们声明一个Optional对象时,无论该对象是在文件作用域还是在函数体内作为局部对象声明,如果不对它初始化,那么它的值默认为空(nil). // 声明a为Int类型 ...

  7. Swift4.0复习基本语法简介

    1.五种类型: 包含五种类型——枚举(enum).结构体(struct).类(class).协议( protocol)以及函数类型(function types). 2.变量对象:var 3.常量对象 ...

  8. Swift4.0复习错误处理

    1.Swift中错误的表示: “在Swift中如果我们要定义一个表示错误的类型非常简单,只需遵循 Error 协议即可.我们通常用枚举或结构体类型来表示错误类型,当然枚举可能用得更多些,因为它能更直观 ...

  9. Swift4.0复习扩展

    1.扩展计算式属性: 2.对方法进行扩展: /// 定义枚举类型Light, /// 它指定了基本类型String enum Light: String { case red = "red& ...

随机推荐

  1. Tensorflow细节-P112-模型持久化

    第一个代码 import tensorflow as tf v1 = tf.Variable(tf.random_normal([1], stddev=1, seed=1)) v2 = tf.Vari ...

  2. 2019-2020-1 20199302《Linux内核原理与分析》第二周作业

    一.实验记录 1.实验代码截屏 本次实验中遇到的一个小问题是: (1)在进行汇编语言编译时,命令行本应是"g/.s*/d ",因为做实验的时候还没有看视频,只是看了书,把" ...

  3. 代码格式化工具---indent工具

    indent工具,可以把代码格式化成某种风格. 通过命令:rpm -qa | grep indent 查看是否安装了indent工具. 若没有,可使用命令sudo apt-get  install   ...

  4. package.json 版本号解释

    经常看到package.json中的各种版本号记录 比如 ~ ^ 等.其实是有个规范的.其遵循 semver. 具体的网站为:  http://semver.org/lang/zh-CN/

  5. mac webstorm 安装破解

    下载: 链接:https://pan.baidu.com/s/1A1afhcpPWMrQtOr1Suqs-g  密码:5r7b 激活码 K6IXATEF43-eyJsaWNlbnNlSWQiOiJLN ...

  6. ZR#1009

    ZR#1009 解法: 因为无敌的SR给了一个大暴力算法,所以通过打表发现了了一些神奇的性质,即第一行和第一列的对应位置数值相等. 我们可以通过手算得出 $ F(n) = \frac{n(n + 1) ...

  7. [CMS]Joomla 3.4.6-RCE漏洞复现

    0x00:简介 1.Joomla是一套全球有名的CMS系统. 2.Joomla基于PHP语言加上MySQL数据库所开发出来的WEB软件系统,目前最新版本是3.9.12. 3.Joomla可以在多种不同 ...

  8. abp zero bug

    web host 项目中ChatController GetUploadedObject 使用:using (CurrentUnitOfWork.SetTenantId(null)) 图片刷新出错,改 ...

  9. zabbix—自动发现端口并监控

    自动批量检查agent开放的端口 PS:如果服务器上的应用都是固定的,不会随机产生的都可以使用自动发现端口来监控:  如果服务器会随机出现端口且每次启动程序都会改变,可以采用第二种方法,来监控指定的端 ...

  10. Oracle语法 及 SQL题目(一)

    目录 课例复制 SQL题目一 SQL题目二 SQL题目三 笔记 课例复制 OCM 全称:Oracle Certified Master 认证大师 含义:Oracle 原厂推出的数据库方向最高级别认证 ...