Interface trong C#

Interface trong C# được định nghĩa như là một giao ước có tính chất cú pháp (syntactical contract) mà tất cả lớp kế thừa Interface đó nên tuân theo. Interface định nghĩa phần “Là gì” của giao ước và các lớp dẫn xuất định nghĩa phần “Cách nào” của giao ước đó.

Interface định nghĩa các thuộc tính, phương thức và sự kiện, mà là các thành viên của Interface đó. Các Interface chỉ chứa khai báo của các thành viên này. Việc định nghĩa các thành viên là trách nhiệm của lớp dẫn xuất. Nó thường giúp cung cấp một Cấu trúc chuẩn mà các lớp dẫn xuất nên tuân theo.

Các lớp trừu tượng (abstract) ở một mức độ nào đó thường chỉ phục vụ cùng một mục đích, tuy nhiên, chúng chủ yếu được sử dụng khi chỉ có vài phương thức được lớp cơ sở khai báo và lớp dẫn xuất thực hiện các chức năng.

Khai báo Interface trong C#

Để khai báo các Interface trong C# ta sử dụng từ khóa interface. Nó tương tự như khai báo lớp. Theo mặc định, các lệnh Interface là public. Đây là ví dụ khai báo Interface trong C#:

public interface GiaoDich
{
   //các thành viên của interface   
   
   void xemGiaoDich();
   double laySoLuong();
}

Ví dụ:

Ví dụ dưới đây sẽ minh họa trình triển khai của Interface trên:

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;

namespace GiaoDienUngDung {
   
   public interface QTMGiaoDich {
      //các thành viên của interface
      void xemGiaoDich();
      double laySoLuong();
   }
   public class GiaoDich : QTMGiaoDich {
      private string ma_giao_dich;
      private string ngay_giao_dich;
      private double so_luong;
      //Lớp GiaoDich kế thừa từ QTMGiaoDich
      public GiaoDich() {
         ma_giao_dich = " ";
         ngay_giao_dich = " ";
         so_luong = 0.0;
      }
      public GiaoDich(string c, string d, double a) {
         ma_giao_dich = c;
         ngay_giao_dich = d;
         so_luong = a;
      }
      public double laySoLuong() {
         return so_luong;
      }
      public void xemGiaoDich() {
         Console.WriteLine("Giao dịch: {0}", ma_giao_dich);
         Console.WriteLine("Ngày giao dịch: {0}", ngay_giao_dich);
         Console.WriteLine("Số lượng: {0}", laySoLuong());
      }
   }
   class Tester {
     
      static void Main(string[] args) {
         GiaoDich so1 = new GiaoDich("001", "08/06/2018", 789000.00);
         GiaoDich so2 = new GiaoDich("002", "09/06/2018", 4519000.00);
         
         so1.xemGiaoDich();
         so2.xemGiaoDich();
         Console.ReadKey();
      }
   }
}

Chạy code trên ta nhận được kết quả sau:

Giao dch: 001
Ngày giao dch: 08/06/2018
S lượng: 789000
Giao dch: 002
Ngày giao dch: 09/06/2018
S lượng: 4519000