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.