Scala Traits

Defining and using traits in Scala

Trait Definition

trait Greeting { # define trait
    def greet(): String # abstract method
}

Implementing Traits

class Person extends Greeting { # extend trait
    def greet(): String = "Hello" # implement method
}

Trait with Implementation

trait Logger {
    def log(msg: String): Unit = { # concrete method
        println(s"Log: $msg")
    }
}

Multiple Traits

class Person extends Greeting with Logger { # mix in multiple traits
    def greet(): String = {
        log("Greeting")
        "Hello"
    }
}

Trait with Constructor

trait Timestamped {
    val timestamp = System.currentTimeMillis() # trait field
}