Overload

في بعض الأحيان نصادف أكثر من شخص يحملون نفس الاسم ولهم نفس اسم الأب وللمصادفة أيضا نفس اسم العائلة صحيح ولكنك تستطيع التفريق بين صديقك أي واحد هو منهم وذلك لأنه يمتلك خصائص خاصة به وسمات تدل على أنه هو المقصود ، أيضا نفس الشيء يحدث لدينا عند البرمجة تواجد أكثر من دالة لهم نفس المسمى بالضبط نسميه overload ولكن لنركز انتباهنا قليلا انه هذه الدوال فقط لهم نفس الاسم ولكن يختلفون من حيث تمرير المتغيرات ونوع الدالة هل ترجع بقيمة ام لا وهكذا .

مثال :-

fun sum(a:Int , b:Int):Int{
    return a+b
}

fun sum(a:Float, b:Float):Float{
    return a+b
}

انشأنا دالتين لهم نفس المسمى ولكن كل واحدة منهم تختلف من حيث  نوع المتغيرات الممررة ، أيضا كان بالإمكان تعريف الدالة الثانية وان نوع المتغيرات int ولكن بدل من أن تقوم بجمع متغيرين تقوم مثلا بجمع أكثر .


في الدالة الرئيسية :-

نلاحظ أنه عندما اردنا استدعاء الدالة باسمها طلب منا ان نحدد أي دالة منهم هل التي متغيراتها Int او تلك التي متغيراتها Float .

fun main(args:Array<String>){

    var result = sum(4,9)
    println ("the first function result is : $result")
    var result1 = sum(2.3f,1.9f)
    println ("the second function result is : $result1")
}

ناتج التنفيذ :-

the first function result is : 13

the second function result is : 4.2

مفهوم overload نستطيع تنفيذه حتى بداخل التصنيف فيمكننا من إنشاء أكثر من دالة بناء ولكن مع مراعاة ما ذكرناه سابقا .