9. Clases y Objetos: POO en Kotlin
Clases básicas
Kotlin hace las clases concisas con el constructor primario integrado:
1 class Persona(val nombre: String, var edad: Int)
2
3 fun main() {
4 val persona = Persona("Ana", 25)
5 println(persona.nombre)
6 persona.edad = 26
7 println(persona.edad)
8 }
data class: Para datos
data class genera automáticamente equals(), hashCode(), toString() y copy():
1 data class Contacto(val nombre: String, val telefono: String)
2
3 fun main() {
4 val contacto = Contacto("Luis", "123456789")
5 println(contacto)
6
7
8 val actualizado = contacto.copy(telefono = "987654321")
9 println(actualizado)
10 }
object: Singletons
Un object es una clase con una sola instancia:
1 object Config {
2 val version = "1.0"
3 val debug = true
4 }
5
6 fun main() {
7 println(Config.version)
8 println(Config.debug)
9
10 }
Herencia con open
Por defecto las clases son final. Usa open para permitir herencia:
1 open class Animal(val nombre: String) {
2 open fun sonido() = "..."
3 }
4
5 class Perro(nombre: String) : Animal(nombre) {
6 override fun sonido() = "Guau!"
7 }
8
9 class Gato(nombre: String) : Animal(nombre) {
10 override fun sonido() = "Miau!"
11 }
12
13 fun main() {
14 val mascota: Animal = Perro("Rex")
15 println("${mascota.nombre} dice: ${mascota.sonido()}")
16
17 }
💻 Misión
Crea una data class `Producto` con nombre y precio. Crea 2 productos, imprímelos y crea una copia de uno con precio actualizado.
👁️ Ver solución sugerida
1 data class Producto(val nombre: String, val precio: Double)
2
3 fun main() {
4 val leche = Producto("Leche", 1.5)
5 val pan = Producto("Pan", 0.8)
6 println(leche)
7 println(pan)
8
9 val leche2 = leche.copy(precio = 1.8)
10 println("Leche actualizada: $leche2")
11 }
Pon a prueba tus clases
Son 5 preguntas de opción múltiple sobre esta lección. ¡Evalúa tus conocimientos!