Swift(二十四、访问权限)
1、Swift入门学习笔记(第一版),对Swift的基础知识点进行梳理总结。知识点一直在变,只是作为参考,以苹果官方文档为准~ 2、在学习完基本的知识点以后会结合官方文档及相关资料,在此版本的基础上进行添加更改。 二十四、访问权限这部分的内容有点绕,感觉一下子记住也不现实,只是有个大概的思路,基本的记住,用到去查,以后用熟了可能会好些 限定其他源文件或模块中代码对你的代码的访问级别 1、模块和源文件模块:以独立单元构建和发布的 源文件: 2、访问级别2.1、三个级别:由高到低
因此 2.2、使用原则使用原则:访问级别统一性 2.3、默认访问级别默认为 3、自定义类型类的访问级别会影响类成员(属性,函数,构造方法等)的默认级别。 注意即使这个类是 public class SomePublicClass { // 显式的 public 类
public var somePublicProperty = 0 // 显式的 public 类成员
var someInternalProperty = 0 // 隐式的 internal 类成员
private func somePrivateMethod() {} // 显式的 private 类成员
}
class SomeInternalClass { // 隐式的 internal 类
var someInternalProperty = 0 // 隐式的 internal 类成员
private func somePrivateMethod() {} // 显式的 private 类成员
}
private class SomePrivateClass { // 显式的 private 类
var somePrivateProperty = 0 // 隐式的 private 类成员
func somePrivateMethod() {} // 隐式的 private 类成员
}
3.1、元组类型可构建一个包含两种不同类型元素的元组,访问级别也可不同。 3.2、函数类型函数的访问级别需要根据函数的参数类型和返回值类型的访问级别得出,也是跟最低级别一致 private func someFunction() -> (SomeInternalClass,SomePrivateClass) {
// function implementation goes here
}
返回值为元组,级别是 3.3、枚举类型枚举的成员访问级别继承自该枚举,不能为枚举中那个的成员单独申明不同的访问级别 3.4、原始值和关联值枚举中定义的原始值和关联值必须有一个访问级别,且不能低于枚举的访问级别 3.5、嵌套类型嵌套类型定义为: 嵌套类型定义为: 3.6、子类子类的访问级别不能高于父类的访问级别 同时还满足各访问级别作用于的前提下,可以重写任意类成员(方法,属性,初始化方法,下标索引等)。即使是 满足前两者条件——>可重写,可访问父类方法 public class A {
private func someMethod() {}
}
internal class B: A {
override internal func someMethod() {
super.someMethod()
}
}
3.7、常量、变量、属性、下标常量、变量、属性不能拥有比他们的类型更高的访问级别 3.8、Getter和Setter
实例 struct TrackedString {
private(set) var numberOfEdits = 0
var value:String = "" {
didSet {
numberOfEdits++
}
}
}
存储 结构体和 var stringToEdit = TrackedString()
stringToEdit.value = "A"
stringToEdit.value += "+B"
stringToEdit.value += "+C"
stringToEdit.value += "+D"
print("The number of edits is (stringToEdit.numberOfEdits)")
Output: The number of edits is 4
4、初始化4.1、初始化初始化方法可申明级别,但不能高于所属类的访问级别 4.2、默认初始化方法默认初始化方法的访问级别与所属类型的访问级别相同,但是最高级别为 但是注意:如果一个类是 4.3、结构体的默认成员初始化方法只要结构体中任一存储属性的级别为 尽管如此,结构体的初始化方法的访问级别依然是 5、协议5.1、协议为协议申明级别,需要注意确保协议旨在申明的访问级别作用域中使用 协议中每个必须要实现的函数都跟协议相同的访问级别 区别于其他类型, 5.2、协议继承继承的协议最高只能和被继承协议的访问级别相同 5.3、协议一致性类的访问级别取决于它本身和所采用协议中最低的访问级别 高级别类可以采用比自己级别低得协议,但是这个类自身的访问级别也会降级 6、扩展6.1、扩展扩展成员具有和原始类成员一致访问级别 或者可以明确申明扩展的访问级别(比如用 6.2、协议的扩展扩展协议遵循该协议的访问级别 7、泛型取决于泛型类型、函数本身、泛型类型参数三者中的最低访问级别 8、类型别名任何定义的类型别名都会被当做不同的类型,以便于进行访问控制 因此一个类型别名的访问级别不可高于原类型的访问级别 以上规则也适用于满足协议一致性而给相关类型命名别名的情况 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |