Avatar ·

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.