Swift4.0复习类

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 = 1
     
    /// 定义下标,参数为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[10]
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.

 

转载于:https://www.cnblogs.com/pengsi/p/8509370.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值