Packages allow us to split classes and interfaces into separate namespaces. A package may contain any number of classes and interfaces. Any file may begin with a package declaration:
package com.packt.myproject class Foo fun bar(): String = "bar"
The package name is used to give us the fully qualified name (FQN) for a class, object, interface, or function. In the preceding example, the Foo class has the fully qualified name of com.packt.myproject.Foo, and the top-level bar function has the fully qualified name of com.packt.myproject.bar.
Kotlin differs from Java in that the directory structure does not have to match the package name. For example, in Java, a com.packt.Foo class must reside in a file such as ./com/packt/Foo.java. Kotlin does not have this restriction.