Traits and Composition
Composition
Build behavior by holding another object.
Composition
CompositionHelper.scala
class Engine(power: Int) {
def boost: Int = power + 10
override def toString: String = "[engine]"
}
class Car(val engine: Engine) {
def totalPower: Int = engine.boost
override def toString: String = "[car]"
}
object Main {
def main(args: Array[String]): Unit = {
val power =
val car = new Car(new Engine(power))
println("power=" + power)
println("totalPower=" + car.totalPower)
}
}
class Engine(power: Int) {
def boost: Int = power + 10
override def toString: String = "[engine]"
}
class Car(val engine: Engine) {
def totalPower: Int = engine.boost
override def toString: String = "[car]"
}
object Main {
def main(args: Array[String]): Unit = {
val power =
val car = new Car(new Engine(power))
println("power=" + power)
println("totalPower=" + car.totalPower)
}
}
class Engine(power: Int) {
def boost: Int = power + 10
override def toString: String = "[engine]"
}
class Car(val engine: Engine) {
def totalPower: Int = engine.boost
override def toString: String = "[car]"
}
object Main {
def main(args: Array[String]): Unit = {
val power =
val car = new Car(new Engine(power))
println("power=" + power)
println("totalPower=" + car.totalPower)
}
}
composition-helper
Composition means an object holds another object and delegates work to it. This reuses behavior without inheritance.