Sobes.tech
Junior

¿Qué puedes contar sobre las propiedades y también los métodos get y set en Kotlin?

sobes.tech AI

Respuesta de la IA

En Kotlin, las propiedades son una combinación de un campo y su correspondiente getter y setter.

Definición de propiedad:

class MyClass {
    var mutableProperty: String = "default"
    val immutableProperty: Int = 10
}

Aquí, mutableProperty es una propiedad mutable con getter y setter por defecto. immutableProperty es una propiedad inmutable solo con getter por defecto.

Definición explícita de getter y setter:

class MyClass {
    var customProperty: String = ""
        get() = field.toUpperCase() // Getter personalizado
        set(value) {
            field = value.toLowerCase() // Setter personalizado
        }

    val computedProperty: Int
        get() = (1..10).random() // Propiedad calculada, no tiene campo
}
  • field - referencia al campo de la propiedad dentro del getter y setter. Solo se usa para propiedades mutables (var).
  • Los getters y setters pueden ser personalizados, realizando lógica adicional al acceder o modificar la propiedad.
  • Las propiedades calculadas (computedProperty) no tienen un campo propio y siempre calculan su valor al acceder.

Puntos clave:

  • En Kotlin, no es necesario crear explícitamente getters y setters para cada campo, como en Java. Se generan automáticamente.
  • Las propiedades se acceden mediante notación de punto (instancia.nombrePropiedad).
  • La definición explícita de getter y setter permite agregar lógica al acceder o modificar la propiedad.
  • Los getters para propiedades val siempre deben devolver un valor del mismo tipo.
  • Los setters para propiedades var aceptan un parámetro del mismo tipo.

Comparación de propiedades en Kotlin y campos+métodos en Java:

Propiedad en Kotlin Campo + Métodos en Java Descripción
var miPropiedad: Tipo private Tipo miPropiedad; + public Tipo getMiPropiedad() + public void setMiPropiedad(Tipo valor) Propiedad mutable con getter y setter automáticos.
val miPropiedad: Tipo private Tipo miPropiedad; + public Tipo getMiPropiedad() Propiedad inmutable solo con getter automático.
Getter/Setter personalizado Escritura explícita de lógica Agregar lógica personalizada al acceder/modificar.
Propiedad calculada Método explícito que devuelve valor El valor de la propiedad se calcula en cada consulta.