Traits and Composition
Trait Contracts
Share behavior through a trait with a default method.
Trait Contracts
TraitContract.scala
trait Greeter {
def greeting: String = "hello"
}
class English extends Greeter {
override def toString: String = "[english]"
}
object Main {
def main(args: Array[String]): Unit = {
val name =
val speaker = new English()
val message = speaker.greeting + ", " + name
println("greeting=" + speaker.greeting)
println("message=" + message)
}
}
trait Greeter {
def greeting: String = "hello"
}
class English extends Greeter {
override def toString: String = "[english]"
}
object Main {
def main(args: Array[String]): Unit = {
val name =
val speaker = new English()
val message = speaker.greeting + ", " + name
println("greeting=" + speaker.greeting)
println("message=" + message)
}
}
trait Greeter {
def greeting: String = "hello"
}
class English extends Greeter {
override def toString: String = "[english]"
}
object Main {
def main(args: Array[String]): Unit = {
val name =
val speaker = new English()
val message = speaker.greeting + ", " + name
println("greeting=" + speaker.greeting)
println("message=" + message)
}
}
trait-contract
A trait defines shared behavior. A class that extends the trait gains its methods without repeating the code.