Interface là gì?

Interface, là một nơi chứa các hàm, thuộc tính mà lớp có thể dùng để kế thừa để tạo các hàm cho riêng mình.
Interface tương tự như class, tuy nhiên nó chỉ đưa ra những đặc điểm chung hơn là những hành động chi tiết như class. Interface thường dùng để mô tả các hành vi của một lớp phải có. Class dùng để thi hành cụ thể các hành vi đó.

Tại sao tôi nói như vậy vì các hàm trong interface không có thân hàm, bạn phải hoàn chỉnh các hàm (implement methods) đó trong lớp được kế thừa từ interface.
Khác với lớp, bạn chỉ có thể kế thừa một lớp nhưng  bạn có thể kế thừa với nhiều interface.

Cách khai báo một interface.

interface <tên>
{
    <tên các hàm>
}

Để tạo một interface, bạn click chuột phải vào project chọn add => new item ( hoặc bấm ctrl + shift + a). Trong popup hiện ra chọn interface, nhập tên cho interface và bấm add.

Tạo interface

Ví dụ: tạo một interface Xe, với các hàm, Chay, BopCoi có kiểu trả về là void.

interface Xe
{
    string BienSo { get; set; }

    void Chay();

    void BopCoi();
}

Nhận xét: trong interface Xe, các hàm không có thân hàm. Hàm và  thuộc tính đều không có aceess modifier, mặc định là public.

Interface và sự kế thừa:

Tương tự như class, ta có thể kế thừa với interface.
Ví dụ: tạo một lớp XeMay kế thừa từ interface Xe.

interface Xe
{
    string BienSo { get; set; }

    void Chay();

    void BopCoi();
}
class XeMay :Xe
{

}

Build project hoặc bấm f5 để chạy chương trình, nó sẽ báo lỗi.

build lỗi

Nguyên nhân là khi kế thừa từ interface, bạn cụ thể hóa các hàm trong nó (implement). Để implement các hàm ta di chuột vào gần tên interface chọn Implement interface, hoặc bấm con trỏ tới tên interface và  bấm tổ hợp phím (ctrl + .)

Interface bây giờ sẽ hiện ra các thuộc tính và phương thức chúng ta cần phải implement.

Thêm thân hàm.

class XeMay : Xe
{
    public string BienSo
    {
        get
        {
            return BienSo;
        }
        set
        {
            BienSo = value;
        }
    }

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

    public void BopCoi()
    {
        Console.WriteLine("Xe dang bop coi");
    }
}

Hàm Main:

static void Main(string[] args)
{
    Xe xeMay = new XeMay();
    xeMay.BienSo = "XM";
    xeMay.BopCoi();
    XeMay xeMay1 = new XeMay();

    Console.ReadLine();
}

Nhận xét mã:

  • Trong hàm Main, ta thấy Xe xeMay = new XeMay();
  • Tương tự như tính đa hình đã nói ở các bài trước đối với class cha và con, ta cũng có thể tạo object từ interface  với một lớp cụ thể.
  • Thuộc tính BienSo trong lớp xe máy thay vì {get;set;} bình thường lại có thân hàm ?
  • Thực ra đây chính là bản đầy đủ của hàm get;set;, trong hàm set, value có nghĩa là giá trị trong phép gán xeMay.BienSo = “XM”;

Lưu ý: Bạn không thể tạo đối tượng trực tiếp từ interface.
Ví dụ: Xe xe = new Xe(); => chương trình sẽ báo lỗi.

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

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.

SQL là ngôn ngữ truy vấn mang tính cấu trúc, nó cho phép bạn truy cập và sử dụng database.

Khóa học này cung cấp cho ta kiến thức nền tảng về công nghệ Blockchain, Bitcoin. Vì sao nó được gọi là công nghệ của tương lai, vì sao giá Bitcoin lại cao đến vậy. Làm sao để mua Bitcoin, ETH.