Final case class
Why should we make case class final?
case class MyClass(param: String)
class AnotherClass(param: String, anotherParam: Int) extends MyClass("anotherClass")
Then you get weird behavior with equals and toString. Things like this can occur:
println(new AnotherClass("blah", 1) == new AnotherClass("blah", 2))
res> true