Replace a trait default with a class-specific value.

Overriding Trait Methods

OverrideMethod.scala
trait Pricing {
  def fee: Int = 5
}

class Premium extends Pricing {
  override def fee: Int = 20
  override def toString: String = "[premium]"
}

object Main {
  def main(args: Array[String]): Unit = {
    val amount = 
    val plan = new Premium()
    val total = amount + plan.fee

    println("fee=" + plan.fee)
    println("total=" + total)
  }
}
trait Pricing {
  def fee: Int = 5
}

class Premium extends Pricing {
  override def fee: Int = 20
  override def toString: String = "[premium]"
}

object Main {
  def main(args: Array[String]): Unit = {
    val amount = 
    val plan = new Premium()
    val total = amount + plan.fee

    println("fee=" + plan.fee)
    println("total=" + total)
  }
}
trait Pricing {
  def fee: Int = 5
}

class Premium extends Pricing {
  override def fee: Int = 20
  override def toString: String = "[premium]"
}

object Main {
  def main(args: Array[String]): Unit = {
    val amount = 
    val plan = new Premium()
    val total = amount + plan.fee

    println("fee=" + plan.fee)
    println("total=" + total)
  }
}
override-method A class can override a trait's default method with `override` to provide its own result while keeping the same contract.