Operator overloading

class Point(var x: Intvar y: Int) {
    override operator fun equals(other: Any?): Boolean {
        return (other is Point) && (x == other.x) && (y == other.y)
    }

    override fun hashCode(): Int {
        val result = 31 * x + y
        return result
    }
}

val p1 = Point(11)
val p2 = Point(22)
val p3 = Point(11)
val equal1 = p1 == p2
//equal1 is False
val equal2 = p1 == p3
//equal2 is True
val equal3 = p1 != p3
//equal3 is False

println("equal1 is $equal1")
println("equal2 is $equal2")
println("equal3 is $equal3")