One point of confusion when developing across different languages is access modifiers. This time, as a smartphone application development edition, we will investigate each access modifier for Java / Kotlin used for Android development, Objective-C / Swift used for iOS development, and C # / F # used for Xamarin, and summarize it as a comparison table. I tried it.
| Access modifier | Java | Kotlin | Objective-C | Swift | C# | F# | 
|---|---|---|---|---|---|---|
| open | (not exist) | (not exist) | (not exist) | Accessable from anywhere * Added in Swift3  | 
(not exist) | (not exist) | 
| public | Accessable from anywhere | Accessable from anywhere | Accessable from anywhere | Accessable from anywhere ※ただし別モジュールからの継承とオーバーライドは不可(Swift2まではAccessable from anywhere)  | 
Can be accessed from anywhere | Can be accessed from anywhere | 
| package | (not exist) | (not exist) | Accessable from within the same framework * Private outside the framework  | 
(not exist) | (not exist) | (not exist) | 
| protected | Accessable from class + derived class in the same package | 継承したAccessable from class + derived class in the same package | Accessable from the same class + derived class | (not exist) | Can be accessed from the same class + derived class | (not exist) | 
| protected internal | (not exist) | (not exist) | (not exist) | (not exist) | Accessable from class + derived class in the same project | (not exist) | 
| internal | (not exist) | Accessable within the same module | (not exist) | Accessable within the same module | Accessable within the same assembly | Accessable within the same assembly | 
| fileprivate | (not exist) | (not exist) | (not exist) | Can be accessed within the same file * Added in Swift3  | 
(not exist) | (not exist) | 
| private | Accessable within the same scope * You can also refer to the private variable of the inner class.  | 
Accessable within the same scope | Accessable within the same scope | Accessable within the same scope * Up to Swift2 can be accessed in the same file  | 
Accessable within the same scope | Accessable within the same scope | 
| Not specified | Accessable within the same package | Same as public | Same as protected | Same as internal | Same as private | Same as public * Let binding/do束縛ではSame as private  | 
It seems that you need to be careful because the movement when you do not specify anything is wonderfully different.
First time in Kotlin. I compared it with Java Access control from Swift 3 Objective-C access specifier