While running Scala, Scala objects are translated to JVM constructs. An object X is translated to a class X$ with ordinary methods, ordinary inheritance etc. This is done to be able to access its public methods from Java by calling them as static methods X.someMethod().