Inheritance and Overriding in Scala