Chapter 8. Classes

In Part 1 of this book you learned about Scala’s core types and how to group them into collections. Now it is time to build your own types with classes.

Classes are the core building block of object-oriented languages, a combination of data structures with functions (“methods”). A class defined with values and variables can be instantiated as many times as needed, each one initialized with its own input data. With inheritance classes can extend other classes, creating a hierarchy of subclasses and superclasses. Polymorphism makes it possible for these subclasses to stand in for their parent classes, while encapsulation provides privacy controls to manage the outward appearance of a class. If these terms are unfamiliar to you, I recommend reading up on general object-oriented programming methodology. Although we will cover the Scala object-oriented features that make use of these concepts, we won’t be spending time on learning the concepts themselves. Understanding them can help you to make the most of Scala’s object-oriented features and design expressive and reusable types.

We’ll start by defining the simplest possible class and instantiating it:

scala> class User
defined class User

scala> val u = new User
u: User = User@7a8c8dcf

scala> val isAnyRef = u.isInstanceOf[AnyRef]
isAnyRef: Boolean = true

We now have our first class. When the REPL prints it out, you see the class name and a hexadecimal string. This is the JVM’s internal reference for that ...

Get Learning Scala now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.