访问控制
访问控制
访问控制 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 1 节课,共 1 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 1 节课。
简介
您好,
访问控制会限制其他源文件或模块中的代码对您部分代码的访问。
模块:模块是框架或应用程序代码的分发单元。
一个模块包含多个源代码文件。
源文件:
源文件是模块中的单个源代码文件。
访问级别
如果某个类型的 AL(访问级别)定义为私有,则属于该类型的所有项也都将是私有的。
续
私有访问标识符会使我们在其前面定义的 variable、方法等内容在作用域内完全可用。
文件私有访问说明符的作用是:除了 variable 所定义的作用域之外,还可以由同一文件中定义的其他类或扩展访问。
尤其是在扩展定义于同一个源文件中时,使用私有访问级别无法访问定义为私有的对象,而使用文件私有访问说明符则是一个不错的选择。
公开
公共访问修饰符可以在整个模块中访问,但当使用两个模块时,它可能会限制子类和作用域的访问。
此外,您可能无法访问使用公共访问修饰符定义的变量和方法。
开放
使用公共访问级别定义的类不能在另一个模块中作为子类的父类(也就是说,不能被扩展),并且不允许重写其中包含的方法。
因此,我们需要一种比公共访问修饰符更灵活的访问说明符。
简而言之,我们可以说开放访问限制符是“比公共访问级别更开放的访问级别”。
续
因此,如果您要使用两个模块,并且希望从一个模块访问另一个模块中的变量和方法,做法很简单:在您设置为父类的类定义开头使用开放访问修饰符。
同样,只需将您希望重写的方法定义为可重写即可。
内部
对于枚举以外的类型,如果该类型定义为公共的,其中的项会自动设为内部级别。但是,如果枚举类型定义为公共的,枚举中的元素将是公共的。
public enum Direction { case North, South, East, West }
//each case is also has public access level.子类化
子类化
我们可以为任何类创建子类。只要该类可以从相关上下文访问即可。
子类的访问级别不能高于其父类,因为父类包含子类。
重写的方法可以比父类中被重写的方法具有更高的访问级别。
public class ClassA {
//method private tanimlanmis
private func aPrivateMethod() {}
internal func anInternalMethod() {}
}
internal class ClassB: ClassA {
// The overridden method is defined internally. Access level has increased even more.
override internal func anInternalMethod() {}
}常量、变量、属性和下标的访问级别
常量、变量、属性和下标的访问级别
常量、变量或属性的访问限制不能低于其关联类型的访问限制。公共属性与公共类类似。
常量、变量、属性和下标的获取器与设置器,也会像常量或变量一样,具有与其所属类型相同的访问级别。
恭喜
恭喜 🎉
在本课中,我们学习了 Swift 中的访问控制。
现在,我们已经完成了Swift 初学者课程。
让我们开始考试并获取证书吧。 🌟

常见问题解答
「访问控制」课时是免费的吗?
是的 — 「访问控制」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 1 节课。
「访问控制」这节课中我会学到什么?
访问控制 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Swift Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 1 节。
「访问控制」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Swift Academy 课中编写并运行代码吗?
能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。