Overload là gì

Ở đời thực, dữ liệu nhận vào khác nhau sẽ cho kết quả khác nhau. Như đọc tin nhắn của thằng bạn thân thì 3 ngày mới trả lời, nhưng đọc tin nhắn của một em chân dài thì trả lời chưa đầy 3 giây.

Giống như ngoài đời, các đối tượng trong lập trình hướng đối tượng có cách đối xử với các dữ liệu đầu vào khác nhau. Một phương thức (method) có thể có nhiều kiểu trả về khác nhau hoặc có các tham số đầu vào khác nhau gọi là nạp chồng hàm (overload method).

Ví dụ:

class Xe
{
    public string Chay()
    {
        return "Xe Dang Chay";
    }

    public void Chay(int bienSo)
    {
        Console.WriteLine("Xe dang chay " + bienSo);
    }

    public void Chay(string bienSo)
    {
        Console.WriteLine("Xe dang chay " + bienSo);
    }

    public void chay(string bienSo, string soSeri)
    {
        Console.WriteLine("Xe dang chay " + bienSo + " " + soSeri);
    }
}

Ta có thể thấy trong ví dụ trên, một phương thức Chay, có thể có nhiều biến thể khác nhau.

Chay, trả về kiểu dữ liệu khác nhau (string hoặc void), hoặc nhận số tham số khác nhau (1 hàm nhận một tham số, một hàm nhận hai tham số).

Lưu ý: overload method đúng khi các tham số đầu vào  khác nhau về bản chất, nếu các tham số đầu vào giống nhau về bản chất thì sẽ gây ra lỗi.

Ví dụ:

class XeLoi
{
    public void Chay(string thamSo1)
    {
        Console.WriteLine("Xe Loi");
    }

    public void Chay(string thamSo2)
    {
        Console.WriteLine("Xe Loi");
    }

    public string Chay(string thamSo2)
    {
        Console.WriteLine("Xe Loi");
    }
}

Ví dụ trên, 3 phương thức chạy, có cùng số tham số đầu vào giống nhau, (cùng kiểu string), nên chương trình sẽ báo lỗi.

Các môn học khác

HTTP giúp kết nối các máy tính trên mạng Internet thông qua TCP/IP

Khoa học về dinh dưỡng, giáo trình giảm cân cho mọi người.

Chương trình thường được xây dựng quanh dữ liệu và logic để xử lý chúng. Nói cách khác: Program = Cấu trúc dữ liệu + giải thuật. Do vậy đây là môn học bắt buộc dành cho các lập trình viên.