Kotlin в IntelliJ IDEA Kotlin змінні Kotlin типи даних Kotlin операції з числами Kotlin умовні вирази Kotlin умовні конструкції Kotlin цикли Kotlin послідовності Kotlin масиви Kotlin функціональне програмування Kotlin змінна кількість параметрів. Vararg Kotlin повернення результату. оператор return Kotlin однорядкові і локальні функції Kotlin перевантаження функцій Kotlin Лямбда-вирази Kotlin функції вищого порядку Kotlin Анонімні функції Kotlin ООП Класи і об'єкти Kotlin ООП властивості Kotlin ООП конструктор Kotlin ООП функції в класах Kotlin ООП Пакети та імпорт Kotlin ООП модифікатори видимості Kotlin ООП вкладені класи Kotlin ООП інтерфейси Kotlin ООП спадкування Kotlin ООП Перевизначення методів і властивостей Kotlin ООП Абстрактні класи та методи Kotlin ООП Data-класи Kotlin ООП перерахування enums Kotlin ООП Null і nullable-типи Kotlin ООП Обробка винятків Kotlin ООП перетворення типів Kotlin ООП Інфіксна функція Kotlin ООП функції розширення Kotlin ООП Узагальнені класи і функції Kotlin ООП обмеження узагальнень Kotlin ООП Варіантність, коваріантність і контраваріантність Kotlin Колекції. Змінювані і незмінні колекції Kotlin Колекції. LIST список Kotlin Колекції. Set Kotlin Колекції. Map

Kotlin перевантаження функцій


Перевантаження функцій (function overloading) представляє визначення декількох функцій з одним і тим же ім'ям, але з різними параметрами. Параметри перевантажених функцій можуть відрізнятися за кількістю, типом або по порядку в списку параметрів.

fun add(a: Int, b: Int) : Int{
    return a + b
}
fun add(a: Double, b: Double) : Double{
    return a + b
}
fun add(a: Int, b: Int, c: Int) : Int{
    return a + b + c
}
fun add(a: Int, b: Double) : Double{
    return a + b
}
fun add(a: Double, b: Int) : Double{
    return a + b
}

В даному випадку для однієї функції add визначено п'ять перевантажених версій. Кожна з версій відрізняється або по типу, ліо кількості, або по порядку параметрів. При виконанні функції add компілятор в залежності від типу і кількості параметрів зможе вибрати для виконання потрібну версію:

fun main(args: Array<String>) {
 
    val a = add(1, 2)
    val b = add(1.5, 2.5)
    val c = add(1, 2, 3)
    val d = add(2, 1.5)
    val e = add(1.5, 2)
}

При цьому при перевантаженні не враховує повертається результат функції. Наприклад, нехай у нас будуть дві наступні версії функції add:

fun add(a: Double, b: Int) : Double{
    return a + b
}
fun add(a: Double, b: Int) : String{
    return "$a + $b"
}

Вони збігаються у всьому за винятком повертається типу. Однак в даному випадку ми стикаючись з помилкою, так як перевантажені версії повинні відрізнятися саме за типом, порядку або кількості параметрів. Відмінність в повернутому типі не мають значення.


перевантаження функцій

Перевантаження функцій (function overloading) представляє визначення декількох функцій з одним і тим же ім'ям, але з різними параметрами. Параметри перевантажених функцій можуть відрізнятися за кількістю, типом або по порядку в списку параметрів.

fun add(a: Int, b: Int) : Int{
    return a + b
}
fun add(a: Double, b: Double) : Double{
    return a + b
}
fun add(a: Int, b: Int, c: Int) : Int{
    return a + b + c
}
fun add(a: Int, b: Double) : Double{
    return a + b
}
fun add(a: Double, b: Int) : Double{
    return a + b
}

В даному випадку для однієї функції add визначено п'ять перевантажених версій. Кожна з версій відрізняється або по типу, ліо кількості, або по порядку параметрів. При виконанні функції add компілятор в залежності від типу і кількості параметрів зможе вибрати для виконання потрібну версію:

fun main(args: Array<String>) {
 
    val a = add(1, 2)
    val b = add(1.5, 2.5)
    val c = add(1, 2, 3)
    val d = add(2, 1.5)
    val e = add(1.5, 2)
}

При цьому при перевантаженні не враховує повертається результат функції. Наприклад, нехай у нас будуть дві наступні версії функції add:

fun add(a: Double, b: Int) : Double{
    return a + b
}
fun add(a: Double, b: Int) : String{
    return "$a + $b"
}

Вони збігаються у всьому за винятком повертається типу. Однак в даному випадку ми стикаючись з помилкою, так як перевантажені версії повинні відрізнятися саме за типом, порядку або кількості параметрів. Відмінність в повернутому типі не мають значення.


Наш партнер:
beta test mp3 playlist downloader