Interface trong C#




Một Interface đượ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 theo. Interface định nghĩa phần "Là gì" của giao ước và các lớp kế thừa đị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 kế thừa. Nó thường giúp ích trong việc cung cấp một Cấu trúc chuẩn mà các lớp kế thừa nên theo.

Khai báo Interface trong C#

Các Interface được khai báo bởi sử dụng từ khóa interface trong C#. Nó tương tự như khai báo lớp. Theo mặc định, các lệnh Interface là puclic. Ví dụ sau minh họa một khai báo Interface trong C#:

public interface ITransactions
{
   // các thành viên của interface
   
   //các phương thức
   void hienThiThongTinGiaoDich();
   double laySoLuong();
}

Ví dụ

Sau đây là ví dụ minh họa trình triển khai của Interface trên: tạo 2 lớp có tên lần lượt là GiaoDichHangHoa, TestCsharp và một interface có tên là GiaoDich

interface GiaoDich

using System;

namespace VietJackCsharp
{
    public interface GiaoDich
    {
        // cac thanh vien cua interface

        //cac phuong thuc
        void hienThiThongTinGiaoDich();
        double laySoLuong();
    }
}

Lớp GiaoDichHangHoa kế thừa interface GiaoDich

using System;

namespace VietJackCsharp
{
    class GiaoDichHangHoa : GiaoDich
    {
      private string ma_hang_hoa;
      private string ngay;
      private double so_luong;
      public GiaoDichHangHoa()
      {
          ma_hang_hoa = " ";
          ngay = " ";
          so_luong = 0.0;
      }

      public GiaoDichHangHoa(string c, string d, double a)
      {
          ma_hang_hoa = c;
          ngay = d;
          so_luong = a;
      }
      
      public double laySoLuong()
      {
          return so_luong;
      }
      
      public void hienThiThongTinGiaoDich()
      {
          Console.WriteLine("Ma hang hoa: {0}", ma_hang_hoa);
          Console.WriteLine("Ngay giao dich: {0}", ngay);
         Console.WriteLine("So luong: {0}", laySoLuong());
      }
    }
}

Lớp TestCsharp chứa phương thức main() để thao tác trên đối tượng GiaoDichHangHoa

using System;
namespace VietJackCsharp
{
    public class TestCsharp
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Interface trong C#");
            Console.WriteLine("Vi du minh hoa interface");
            Console.WriteLine("--------------------------");

            //tao cac doi tuong GiaoDichHangHoa
            GiaoDichHangHoa t1 = new GiaoDichHangHoa("001", "8/10/2012", 78900.00);
            GiaoDichHangHoa t2 = new GiaoDichHangHoa("002", "9/10/2012", 451900.00);
            t1.hienThiThongTinGiaoDich();
            t2.hienThiThongTinGiaoDich();

            Console.ReadKey();
        }
    }
}

Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:

Interface trong C#

Mọi người cho thể tham gia khóa học thứ 3 của vietjackteam vào đầu tháng 07/2017 do anh Nguyễn Thanh Tuyền, admin vietjack.com trực tiếp giảng dạy tại Hà Nội. Chi tiết nội dung khóa học tham khỏa link : Khóa học Java.Các bạn học CNTT, điện tử viễn thông, đa phương tiện, điện-điện tử, toán tin có thể theo học khóa này. Khóa học cũng đưa 200 câu hỏi phỏng vấn java trên https://www.javatpoint.com/corejava-interview-questions vào nội dung để giúp các bạn dễ dàng vượt qua kì phỏng vấn

Mọi người có thể xem demo nội dung khóa học tại địa chỉ Video demo khóa học Offline

Các bạn ở xa học không có điều kiện thời gian có thể tham dự khóa Java online để chủ động cho việc học tập. Thông tin khóa học tại Khóa học Java Online trên Udemy

Loạt bài hướng dẫn học C# cơ bản và nâng cao của chúng tôi dựa trên nguồn tài liệu của: Tutorialspoint.com

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.