Visibility modifiers
Kotlin supports four types of visibility modifier (access modifiers)--private, protected, public, and internal. Kotlin does not support private Java modifiers. The main difference between a Kotlin and Java modifier is that the default visibility modifier in Kotlin is public, and it's not required to specify it explicitly, so it can be omitted for a particular declaration. All of the modifiers can be applied to various elements divided into two main groups based on their declaration site: top-level elements and nested members.
Note
A quick reminder from Chapter 3, Playing with Functions: top level elements are elements declared directly inside the Kotlin file, as opposed to elements nested inside a class, object, interface, or function. In Java, we can only declare classes and interfaces at the top level, while Kotlin also allows functions, objects, properties, and extensions there.
First, we have top-level element visibility modifiers:
public(default): Element is visible...