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
valsiempre deben devolver un valor del mismo tipo. - Los setters para propiedades
varaceptan 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. |