Purpose
Personal Note
Access Control
Since Swift3.0 was released, Access Control has been changed.
"open" and "fileprivate" are new access controls.
open: Laxest access control. Can access from outside of modules
public: Can access from outside of modules, but cannot do "override" and make it as subclass
internal: Can access from inside of modules. Basically if you don't mention, parameter will apply this as default
fileprivate: Allow access from inside of file.
private: Strictest. Allow access from class