在Swift中,Access修饰符内部和公共之间有什么区别?

iCo*_*ode 7 swift swift3

雨燕报价5个访问修饰符:open,public,internal,fileprivateprivate.

我对这些说明符的了解,(主要来自linklink_2)

open 表示类和类成员可以在定义模块(目标)内部和外部进行子类化和覆盖.

fileprivate限制将实体用于其定义的源文件.基本上可以通过单个文件中的多个类访问.

private 限制将实体用于其附件声明.

现在,公众和内部对我来说几乎是一样的: -

public表示类和类成员只能在定义模块(目标)中进行子类化和重写.

internal使实体能够在定义模块(目标)中使用.此外,如果没有提到其他内容,这恰好是默认说明符.在定义应用程序或框架的内部结构时,我们通常会使用内部访问.

那么基本上公共和内部有何不同?

这是我的第一个问题,如果我错过了任何细节,请告诉我.提前致谢.

Nir*_*avS 4

您标记为公共的任何内容都可以在您的应用程序内部和应用程序(模块)外部使用。如果您将某些内容标记为内部,则只能在您的应用程序(模块)中使用。这在您开发库(框架)时非常有帮助,您可以使用内部来隐藏库结构。
A.swift 和 B.swift 的公共成员可供 C.swift 和 D.swift 使用。唯一的限制是类不能被子类化(它们需要是开放的。) - 我的答案基于@Keaz 和@Alexander。