In Scala, a val can override a def, but a def cannot override a val.
val
def
So, is there an advantage to declaring a trait
A val expression is evaluated once on variable declaration, it is strict and immutable.
A def is re-evaluated each time you call it