There are no adventages over inner classes. It's like comparing @orangy and 🍎. There is only one instance of companion object, it behaves more like static functions, but with the advantage it can implement interface and be passed around as argument for example.