Scala Type Hierarchy

Scala | Type Hierarchy: In this tutorial, we will learn about the Type Hierarchy in Scala and examples of a hierarchy.
Submitted by Shivang Yadav, on July 13, 2020

In Scala programming language everything is an object. Even data types are treated as objects in Scala and have some method that performs operations of the data stored by them. So, all the data types, functions/methods, classes you define have a type and the type is defined in the type hierarchy.

Let's see the type hierarchy diagram that will help you understand the type hierarchy.

type hierarchy diagram

Now, let's see all the main types of the type hierarchy.

Types of the type hierarchy

1) Any

The parent type of all the types in Scala is Any type. It called the top type and has some universal method that can be used by all types in the type hierarchy.

Scala program to display the use of any type

object myObject{
	def main(args: Array[String]) { 
	    println("Creating a set of type = 'Any' ")
		val anySet : Set[Any]  = Set(34, "includehelp", true, List(32, 3, 45))
		println("Set is : " + anySet)
	} 
} 

Output:

Creating a set of type = 'Any' 
Set is : Set(34, includehelp, true, List(32, 3, 45))

The Any type has two direct subtypes: AnyVal and AnyRef types.

2) AnyVal

The child type of Any that represents value type is AnyVal. In scala, there are in total nine predefined value types and these are sub-type of the AnyVal. They are :

  • Double represents a double-precision decimal type.
  • Float represents a single-precision decimal type.
  • Long represents 64 bit signed integer type(value: -9223372036854775808 to 9223372036854775807).
  • Int represents 32 bit signed integer type (value: -2147483648 to 2147483647).
  • Short represents 16 bit signed integer type (value: -32768 to 32767).
  • Byte represents 8 bit signed value (value: -128 to 127).
  • Char represents character type (value: all valid character).
  • Unit represents a unit type.
  • Boolean represents boolean type (value: true/false).

Program:

object myObject{
	def main(args: Array[String]) { 
	    println("Creating a set of type = 'AnyVal' ")
		val anySet : Set[AnyVal]  = Set(987.12331, 89.76, 87694421, 34, 'i', true)
		println("Set is : " + anySet)
	} 
} 

Output:

Creating a set of type = 'AnyVal' 
Set is : HashSet(89.76, 87694421, true, i, 34, 987.12331)

3) AnyRef

The child type of Any that represents non-value type is AnyRef. This type is referenced by all user-defined classes by default.

Program:

object myObject{
    
	def main(args: Array[String]) { 
	    println("Creating a set of type = 'AnyRef' ")
		val anySet : Set[AnyRef]  = Set("includehelp")
		println("Set is : " + anySet)
	} 
} 

Output:

Creating a set of type = 'AnyRef' 
Set is : Set(includehelp)

These were about the main type of Scala library that provides some basic functionality to all entities in the Scala.

There are two important types that are at the bottom of the hierarchy. They are,

  1. Nothing
  2. Null

a) Nothing

The type at the bottom of the hierarchy that is a subtype of all the types in Scala is Nothing. There is no value of this type.

Program:

object myObject{
	def main(args: Array[String]) { 
	    println("Creating a set of type = 'Nothing' ")
		val anySet : Set[Nothing]  = Set()
		println("Set is : " + anySet)
	} 
} 

Output:

Creating a set of type = 'Nothing' 
Set is : Set()

The Nothing type in Scala is used to signal non-termination like program exit.

2) Null

The type is subtype of reference types (for all subtypes of AnyRef type).

Program:

object myObject{
	def main(args: Array[String]) { 
	    println("Creating a set of type = 'Null' ")
		val anyRef : List[Null]  = List()
		println("Set is : " + anyRef)
	} 
} 

Output:

Creating a set of type = 'Null' 
Set is : List()





Comments and Discussions

Ad: Are you a blogger? Join our Blogging forum.





Languages: » C » C++ » C++ STL » Java » Data Structure » C#.Net » Android » Kotlin » SQL
Web Technologies: » PHP » Python » JavaScript » CSS » Ajax » Node.js » Web programming/HTML
Solved programs: » C » C++ » DS » Java » C#
Aptitude que. & ans.: » C » C++ » Java » DBMS
Interview que. & ans.: » C » Embedded C » Java » SEO » HR
CS Subjects: » CS Basics » O.S. » Networks » DBMS » Embedded Systems » Cloud Computing
» Machine learning » CS Organizations » Linux » DOS
More: » Articles » Puzzles » News/Updates


© https://www.includehelp.com some rights reserved.