La sobrecarga de operadores en Kotlin permite redefinir el comportamiento de ciertos operadores cuando se aplican a tus propios tipos o clases. Esto te permite hacer que los operadores funcionen de manera intuitiva con objetos personalizados. Para sobrecargar un operador, simplemente necesitas definir una función con un nombre específico en la clase correspondiente, usando la palabra clave operator
.
Kotlin permite sobrecargar varios operadores comunes, como +
, -
, *
, /
, %
, y muchos otros. Cada uno tiene una función equivalente que debes implementar para que funcione correctamente en tus clases.
Vamos a crear una clase Punto
que represente coordenadas en un plano 2D, y sobrecargar el operador +
para sumar dos puntos.
data class Punto(val x: Int, val y: Int) {
operator fun plus(otro: Punto): Punto {
return Punto(x + otro.x, y + otro.y)
}
}
fun main() {
val p1 = Punto(2, 3)
val p2 = Punto(4, 1)
val resultado = p1 + p2
println(resultado) // Punto(x=6, y=4)
}
En este ejemplo, sobrecargamos el operador +
para que sume las coordenadas x
e y
de dos objetos Punto
. Ahora, p1 + p2
se traduce en una llamada a la función plus()
.
-
(resta):
operator fun minus(otro: Punto): Punto {
return Punto(x - otro.x, y - otro.y)
}
*
(multiplicación):
operator fun times(escala: Int): Punto {
return Punto(x * escala, y * escala)
}
==
(igualdad):
operator fun equals(otro: Punto): Boolean {
return x == otro.x && y == otro.y
}
Además de los operadores simples, también se pueden sobrecargar operadores de asignación compuesta como +=
, -=
, entre otros. Para ello, se implementa una función que usa el mismo operador, pero terminando en Assign
.
operator fun plusAssign(otro: Punto) {
x += otro.x
y += otro.y
}
Para más detalles sobre la sobrecarga de operadores en Kotlin, puedes consultar la documentación oficial de Kotlin.
Jorge García
Fullstack developer