Junior — Middle
Is it possible to apply the keyword abstract to a data class in programming languages that support both concepts?
sobes.tech AI
Answer from AI
In programming languages that support both concepts — abstract classes and data classes (for example, Kotlin), the keyword abstract can be applied to data classes, but with restrictions.
However, in Kotlin, for example, a data class cannot be abstract because:
- A data class is intended for storing data with automatically generated methods (equals, hashCode, toString, copy).
- An abstract class cannot be instantiated directly, and a data class requires implementation of all properties for method generation.
If you need to create an abstract class with similar properties, it's better to use a regular abstract class without data.
Example (Kotlin):
// Compilation error
abstract data class User(val name: String)
// Correct approach
abstract class User(val name: String)
Thus, generally, you cannot apply abstract to a data class.