Kotlin Operator Overloading (Dengan Contoh)

Daftar Isi

Dalam artikel ini, Anda akan belajar tentang operator overloading (menentukan cara kerja operator untuk tipe yang ditentukan pengguna seperti objek) dengan bantuan contoh.

Saat Anda menggunakan operator di Kotlin, fungsi anggota yang sesuai akan dipanggil. Misalnya, ekspresi a+bberubah menjadi a.plus(b)under the hood.

 fun main(args: Array) ( val a = 5 val b = 10 print(a.plus(b)) // print(a+b) )

Saat Anda menjalankan program, hasilnya adalah:

 15

Faktanya, plus()fungsi kelebihan beban untuk bekerja dengan berbagai tipe dasar Kotlin dan String.

 // + operator untuk tipe dasar operator menyenangkan plus (lainnya: Byte): Int operator menyenangkan plus (lainnya: Pendek): Int operator menyenangkan plus (lainnya: Int): Int operator menyenangkan plus (lainnya: Panjang): Operator panjang menyenangkan plus (other: Float): Operator float menyenangkan plus (other: Double): Double // untuk kesenangan operator penggabungan string String? .plus (other: Any?): String 

Anda juga dapat menentukan cara kerja operator untuk objek dengan membebani fungsi yang sesuai. Misalnya, Anda perlu menentukan cara +kerja operator untuk objek dengan plus()fungsi overloading .

Contoh: Overloading + Operator

 fun main(args: Array) ( val p1 = Point(3, -8) val p2 = Point(2, 9) var sum = Point() sum = p1 + p2 println("sum = ($(sum.x), $(sum.y))") ) class Point(val x: Int = 0, val y: Int = 10) ( // overloading plus function operator fun plus(p: Point) : Point ( return Point(x + p.x, y + p.y) ) )

Saat Anda menjalankan program, hasilnya adalah:

 jumlah = (5, 1)

Di sini, plus()fungsinya ditandai dengan operatorkata kunci untuk memberi tahu compiler bahwa +operator sedang kelebihan beban.

Ekspresi p1 + p2diubah menjadi di p1.plus(p2)bawah tenda.

Contoh: - Operator Overloading

Dalam contoh ini, Anda akan belajar membebani --operator. Ekspresi --adiubah menjadi di a.dec()bawah tenda.

Fungsi dec()anggota tidak mengambil argumen apa pun.

 fun main(args: Array) ( var point = Point(3, -8) --point println("point = ($(point.x), $(point.y))") ) class Point(var x: Int = 0, var y: Int = 10) ( operator fun dec() = Point(--x, --y) )

Saat Anda menjalankan program, outputnya adalah:

 poin = (2, -9) 

Ingat itu,

 operator menyenangkan dec () = Titik (- x, --y)

setara dengan

 operator fun dec (): Point (return Point (- x, --y))

Beberapa Poin Penting

1. Saat Anda membebani operator, Anda harus mencoba mempertahankan semangat asli operator. Sebagai contoh,

 fun main(args: Array) ( val p1 = Point(3, -8) val p2 = Point(2, 9) var sum = Point() sum = p1 + p2 println("sum = ($(sum.x), $(sum.y))") ) class Point(val x: Int = 0, val y: Int = 10) ( // overloading plus function operator fun plus(p: Point) = Point(x - p.x, y - p.y) )

Meskipun program di atas secara teknis benar, kami telah menggunakan +operator untuk mengurangi properti yang sesuai dari dua objek yang membuat program membingungkan.

2. Tidak seperti bahasa seperti Scala, hanya sekumpulan operator tertentu yang dapat kelebihan beban di Kotlin. Kunjungi halaman untuk mempelajari tentang operator yang dapat kelebihan beban di Kotlin dan fungsi anggotanya yang sesuai.

Artikel yang menarik...