case class Dog(name: String, breed: String) case class Cat(name: String, breed: String) case class Horse(name: String, breed: String) trait AnimalLike { def name: String def breed: String } case class Dog(val name: String, val breed: String) extends AnimalLike