Volver a la página principal
miércoles 11 septiembre 2024
12

La sobrecarga de operadores en Kotlin

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.

Operadores sobrecargables

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.

Ejemplo básico de sobrecarga de operadores

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().

Otros operadores que se pueden sobrecargar

  • Operador - (resta):
operator fun minus(otro: Punto): Punto {
    return Punto(x - otro.x, y - otro.y)
}
  • Operador * (multiplicación):
operator fun times(escala: Int): Punto {
    return Punto(x * escala, y * escala)
}
  • Operador == (igualdad):
operator fun equals(otro: Punto): Boolean {
    return x == otro.x && y == otro.y
}

Sobrecarga de operadores de asignación compuesta

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
}

Referencia oficial

Para más detalles sobre la sobrecarga de operadores en Kotlin, puedes consultar la documentación oficial de Kotlin.

Etiquetas:
kotlin
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer