Swift 3 Access Levels
Swift 3 now provides five access levels for code entities.
The five levels are shown below from least to most restrictive.
Open access allows entities to be accessed from any source code within your module and also external modules.
The same as open but restricts subclassing to your module.
This is the default level. Entities can be accessed from any source in the defining module but not from external modules.
Access is allowed only within the defining module.
Access is allowed only within the enclosing declaration.
Both FILEPRIVATE and PRIVATE let you hide implementation details to just a source file or single declaration respectively.