In Scala, every value is an object. Functions are first-class values, which also makes them objects of their respective classes.
The following diagram 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 earlier):
![](https://static.packt-cdn.com/products/9781788471305/graphics/assets/f035b5ee-e98b-4ffa-ae47-5b3db49ddcc2.png)
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.