Page cover

Method Overloading

นพศร แก้วเย็นฉ่ำ 650710557

Overloading Method หมายถึงอะไร? 🏕️

Overloading Method หมายถึงอะไร? 🏕️

คือ วิธีการทั่วไปในการนำ "Polymorphism" มาใช้ ซึ่งเป็นความสามารถในการกำหนดฟังก์ชันใหม่ในรูปแบบ มากกว่าหนึ่งรูปแบบ ที่สามารถนำฟังก์ชัน "Overloading" มาใช้ได้โดยการกำหนดการทำงานสองรายการขึ้นไปในคลาสที่มีชื่อ method เดียวกัน ตัว C# สามารถแยกแยะเมธอดที่มี พารามิเตอร์ของเมธอดต่างกันได้

พารามิเตอร์ของเมธอดต่างกันได้ หมายถึง เมธอดสามารถมีชื่อเดียวกันได้แต่มีการรับพารามิเตอร์ที่ต่างออกไปจากMethodเดิม เช่น "จำนวนพารามิเตอร์", "ลำดับของพารามิเตอร์", "ประเภทข้อมูลของพารามิเตอร์" ภายในคลาสเดียวกันหรือจะเกิดการ " Overloading " ระหว่าง " Parent Class " กับ " Sub Class " ได้เหมือนกัน

🚧🚧🚧🚧🚧 ตัวอย่างการสร้าง Method Overloading ด้วยC# 🚧🚧🚧🚧🚧

# Parent Class
using System;
class My_Parent{

    public void Display(int value_int){
    
        Console.WriteLine("Integer: " + value_int);
    }
    
    // Method Overloading เปลี่ยนการรับพารามิเตอร์จาก int เป็น String ภายใน class My_Parent 
    public void Display(string valueString){
    
        Console.WriteLine("String: " + value_String);
    }
    
}

🚧🚧🚧🚧🚧 Output ที่ได้หลังจากรันคำสั่งใน C# 🚧🚧🚧🚧🚧

ข้อควรระวังในการทำ Method Overloading ใน C#

เปรียบเทียบ Method Overloading ระหว่าง C# กับ Java, C, Python

🏜️ C#

🌄 Java

🚨🚨 จะเห็นได้ว่า ใน C# และ Java นั้นไม่ได้มีความต่างกันในเรื่องของการทำ " Overloading Method " เพราะทั้งใน C# และ Java มีการใช้ภาษาเชิงวัตถุ และมีการรองรับการใช้ " Overloading Method " อย่างเป็นที่ชัดเจน ในภาษา Java เรียกการทำ Overloading Method ว่า " Early Binding " 🚨🚨

🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧

🏔️ C

🛑🛑 เนื่องในภาษา C ไม่มีการรองรับ การทำ " Overloading Method " เพราะ C ไม่เป็น ภาษาเชิงวัตถุ (Object-Oriented Programming) และอีกเหตุผลเป็นเพราะคอมไพเลอร์ไม่รองรับ จึงต้องใช้ชื่อในการสร้างฟังก์ชั่น (method) ที่แตกต่างกัน 🛑🛑

❗️❗️❗️ แต่หลังจาก มีการเพิ่มตัว " _Generic " มาใน C11 (รองรับใน GCC ตั้งแต่เวอร์ชัน 4.9) ก็ทำให้สามารถเรียกกาารใช้งานฟังก์ชั่นโดยที่ไม่ต้องเรียกฟังก์ชันที่มีชื่อแตกต่างกันที่ละตัว ❗️❗️❗️

🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧🚧

🏝️ Python

🚨🚨 เดิมทีใน Python นั้นมีความหยืดหยุ่นทางการประกาศชนิดตัวแปร เพราะเป็น ภาษาแบบ " Dynamically typed language " ซึ่งจะไม่ได้มีการกำหนดชนิดข้อมูลตั้งแต่ตอนประกาศเหมือน C#, C, Java ทำให้การทำ " Overloading Method " ด้วยการเปลี่ยนการรับชนิดพารามิเตอร์นั้นไม่ได้จำเป็นมากนะ แต่ก็สามารถทำการกำหนดชนิดข้อมูลเช็คก่อนแล้วค่อยทำการรีเทิร์นค่าได้เหมือนกัน 🚨🚨

🛑🛑 การเพิ่มจำนวนพารามิเตอร์ที่จะต้องการรับก็สามารถทำได้เเหมือนกันกับภาษา C# 🛑🛑

Slides 🎑

Video 🌠

https://youtu.be/px_VXSGcAH8

Reference 🚝🗻

  • C#

- https://csharp.net-tutorials.com/th/119/classes/method-overloading/

-ใช้ข้อมูลในส่วนนิยาม Overloading Method ทั่วไป

- https://www.geeksforgeeks.org/c-sharp-method-overloading/

-ใช้หาความหมายของการทำ Overloading Method ใน C#

- https://www.w3schools.com/cs/cs_method_overloading.php

-ใช้เป็นตัวอย่างในการสร้าง Overloading Method ใน C#

- https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/member-

overloading

-ใช้หาหลักการในการทำ และ ข้อควรระวังในการทำ Method overloading ใน C#

-ใช้เป็นตัวอย่างในการสร้าง Overloading Method ใน C#

Last updated