Diferencia entre class y object en Kotlin: ¿cuándo usar la palabra clave object?
¡Hola! Acabo de empezar a aprender Kotlin después de Java y me confundí con la palabra clave object. En Java usamos new para crear instancias, y class es solo una plantilla. Pero en Kotlin veo que object se usa en todas partes: para declarar singletons, para crear clases anónimas, e incluso como companion object dentro de una clase.
Aquí hay un ejemplo que me desconcierta:
```kotlin
// ¿Esto es una clase?
class MyClass {
fun doSomething() {
println("Hello from class")
}
}
// ¿Y esto qué es? ¿También una clase?
object MyObject {
fun doSomething() {
println("Hello from object")
}
}
// ¿Y cómo se usa esto?
fun main() {
val instance = MyClass() // Ok, creo una instancia de la clase
MyObject.doSomething() // ¿Y aquí sin new? ¿Por qué?
}
```
Explícame, por favor, cuál es la diferencia fundamental entre class y object en Kotlin. ¿Cuándo debo usar class y cuándo object? ¿Y por qué object no se puede crear mediante un constructor como una clase normal? Agradecería ejemplos.