Classes, objects, traits, constructors, functions, properties and their setters can have visibility modifiers. (Getters always have the same visibility as the property.) There are four visibility modifiers in Kotlin:
Modifier | Meaning
----- | -----
public | Makes the declaration visible everywhere. This is applied by default, so it can be omitted.
protected | Is NOT available for declarations at the top level of a source file or package
private | Makes the declaration visible to code inside its source file, but invisible elsewhere.
internal | Makes the declaration visible inside the same module, but invisible elsewhere. A module is a set of Kotlin files that are compiled together, such as an IntelliJ IDEA module.