Swift's access controls are not bound to inheritance, but rather to files and modules. Those modifiers can be applied to types, type members, global variables and constants.
public
means it's visible to the outside, similar to Java's public
. Those symbols are exported, i.e. the public interface of a Framework.
internal
is only accessible to files in the same module. This is similar to package private, but it's not visible to subclasses outside the module. Those are used for things that are not part of the public interface but shared amongst the code inside the Framework.
private
symbols are only visible to code in the same file, again independent of inheritance.