In Scala, every value is an object. Functions are first class values, which also makes them objects of their respective classes. The following figure shows the Scala unified type system and how this is achieved. It is adapted from http://www.scala-lang.org/old/sites/default/files/images/classhierarchy.png and represents an up-to-date view of the model (some classes such as ScalaObject
have disappeared, as we have already mentioned before).
As you can see, Scala does not have the same concept of primitive types that Java has and all types are ultimately subtypes of Any
.