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 dịch: 001
Ngày giao dịch: 08/06/2018
Số lượng: 789000
Giao dịch: 002
Ngày giao dịch: 09/06/2018
Số lượng: 4519000
18 Th3 2021
18 Th3 2021
18 Th3 2021
18 Th3 2021
18 Th3 2021
18 Th3 2021