C++
C#
C
#include <iostream> int sum(int, int); double sum(double, double); int main() { int result1 = sum(3, 6); // выбирается версия int sum(int, int) std::cout << result1 << std::endl; // 9 double result2 = sum(3.3, 6.6); // выбирается версия double sum(double, double) std::cout << result2 << std::endl; // 9.9 } int sum(int a, int b) { return a + b; } double sum(double a, double b) { return a + b; }
В C# можно создавать несколько методов с одним и тем же именем, но разной сигнатурой: разным количеством параметров, с разными типами параметров, с разным порядком параметров, с разными модификаторами параметров.
class Program { static void Main() { int result1 = Sum(3, 6); // выбирается версия int Sum(int, int) Console.WriteLine(result1); // 9 double result2 = Sum(3.3, 6.6); // выбирается версия double Sum(double, double) Console.WriteLine(result2); // 9.8999999999... } static int Sum(int x, int y) { return x + y; } static double Sum(double x, double y) { return x + y; } }
В Kotlin можно создавать несколько функций с одним и тем же именем, но которые отличаются по количеству, типу или по порядку в списке параметров.
fun sum(a: Int, b: Int): Int { return a + b } fun sum(a: Double, b: Double): Double { return a + b } fun main() { val result1: Int = sum(3, 6) // выбирается версия int Sum(int, int) println(result1) // 9 val result2: Double = sum(3.3, 6.6) // выбирается версия double Sum(double, double) println(result2) // 9.8999999999... }