Constructors and Initialization in Scala

Introduction

Welcome! Today, we're exploring Constructors and Initialization in Scala. We'll focus on the syntax of constructors, property declaration, initialization logic, and the this keyword. These are foundational for creating and using objects and properties in Scala. Let's begin!

Understanding Primary Constructors

Understanding Auxiliary Constructors

Scala supports auxiliary constructors for additional initialization flexibility, complementing the primary constructor. These constructors allow method overloading and can provide default arguments. Each auxiliary constructor must call either the primary constructor or another auxiliary constructor as its first action, ensuring a consistent initial setup.

Here is an example:

Scala
class Car(var color: String):
    var brand: String = "Unknown"
    var model: String = "Unknown"

    // An auxiliary constructor
    def this(color: String, brand: String) =
        this(color) // calling primary constructor
        this.brand = brand

    // Another auxiliary constructor
    def this(color: String, brand: String, model: String) =
        this(color, brand) // calling auxiliary constructor from above
        this.model = model

@main def run: Unit =
    val car1 = Car("black") // Using the primary constructor to create a Car object
    val car2 = Car("red", "Toyota") // Using the first auxiliary constructor to create a Car object   
    val car3 = Car("blue", "Toyota", "Corolla") // Using the second auxiliary constructor to create a Car object

In this example, the Car class has one primary constructor and two auxiliary constructors. The first auxiliary constructor allows initializing the color and brand, while the second also initializes the model.

Sign up

Join the 1M+ learners on CodeSignal

Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal