If any of the methods that were just exhibited are already present in your class, the compiler won't overwrite them with its own version. You can, therefore, take full control if the requirements are as such.
When you define a data class, you need to follow the following rules:
- The primary constructor needs to have at least one parameter.
- All primary constructor parameters need to be marked as val or var.
- Data classes cannot be abstract, open, sealed, or inner.
- Data classes cannot extend other classes (but may implement interfaces).
Many Java frameworks require your class to provide a default parameterless constructor. Imagine you are writing an email application and you model the Email type like this (for the sake of simplicity):
data class Email(var to:String = "", var subject:String= "", ...