Type Basics and Polymorphism
In this section, we'll look at different types and polymorphism. We'll start with the unified type system of Scala and end with existential types.
A Unified Type System
Scala has a unified
type system. What this
means is that all types, including "primitive" types, inherit from
a common type.
Any
is a supertype of all types. It is often
called the top type, and defines universal
methods such as
equals
,
hashCode,
and
toString
.
Nothing
is
a subtype of all types, and is often called the
bottom type. There is no value that has a type of
Nothing
, so a common use case for it is to signal non-termination: a thrown exception, a program exit, or an infinite loop.
Any
has two direct subclasses:
AnyVal
and
AnyRef
. Value types are represented by
AnyVal. AnyRef
represents the reference types. There are
nine
non-nullable predefined value types:
Double
,
Float
,
Long
,
Boolean
,
Unit
,
Byte
,
Char
,
Short,
and
Int
. All of these types are similar in other...