Diferença entre class e object em Kotlin: quando usar a palavra-chave object?
Olá! Acabei de começar a estudar Kotlin depois de Java e fiquei confuso com a palavra-chave object. Em Java usamos new para criar instâncias, e class é apenas um template. Mas em Kotlin vejo que object é usado em todos os lugares: para declarar singletons, para criar classes anônimas e até como companion object dentro de uma classe.
Aqui está um exemplo que me confunde:
```kotlin
// Isso é uma classe?
class MyClass {
fun doSomething() {
println("Hello from class")
}
}
// E isso? Também é uma classe?
object MyObject {
fun doSomething() {
println("Hello from object")
}
}
// E como usar isso?
fun main() {
val instance = MyClass() // Ok, estou criando uma instância da classe
MyObject.doSomething() // Mas aqui sem new? Por quê?
}
```
Explique, por favor, qual é a diferença fundamental entre class e object em Kotlin. Quando devo usar class e quando devo usar object? E por que object não pode ser criado através de um construtor, como uma classe normal? Ficarei grato por exemplos.