Giao diện (Interface) trong C#

Interface là 1 khái niệm thường được thấy trong các ngôn ngữ cấp cao như C#, Java, ... interface mang đến những ràng buộc về hành động cho các đối tượng, vừa mang lại kiến trúc tốt hơn cho hệ thống, tránh sơ sót và dễ dàng bảo trì. Để tìm hiểu về interface trong C#, ý nghĩa sử dụng, tính ứng dụng và cách thức sử dụng interface trong C#, mời bạn đọc cùng eLib tham khảo bài viết dưới đây.

Giao diện (Interface) trong C#

1. Interface là gì?

Một cách khác để đạt được sự trừu tượng trong C# là Interface.

Một Interface trong C# là một bản thiết kế của một lớp. Nó chỉ có các phương thức và thuộc tính trừu tượng. Interface là một kỹ thuật để thu được tính trừu tượng hoàn toàn và đa kế thừa trong C#.

Ví dụ:

// interface
interface Animal
{
  void animalSound(); // phương thức không có thân hàm
  void run(); // phương thức không có thân hàm
}

Theo mặc định, các thành viên của một giao diện là abstract và public.

Interface có thể chứa các thuộc tính và phương thức, nhưng không phải là các trường

2. Ví dụ Interface trong C#

Để truy cập các phương thức của Interface, Interface phải được "triển khai" (giống như được kế thừa) bởi một lớp khác. Để triển khai một interface, sử dụng biểu tượng : (giống như với kế thừa). Phần thân của phương thức interface được cung cấp bởi lớp "implement". Lưu ý rằng bạn không phải sử dụng từ khóa override khi triển khai interface:

using System;

namespace Csharp
{
    // Interface
    interface IAnimal
    {
        void Say(); // phuong thuc interface khong co body
    }

    // Pig "implements" interface IAnimal
    class Pig : IAnimal
    {
        public void Say()
        {
            // Cung cap than ham Say() o day
            Console.WriteLine("The pig says: oik oik");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Pig myPig = new Pig();
            myPig.Say();
        }
    }
}

Kết quả:

The pig says: oik oik

Các lưu ý về interface trong C#:

  • Giống như các lớp trừu tượng, các interface không thể được sử dụng để tạo các đối tượng (trong ví dụ trên, không thể tạo đối tượng "IAnimal" trong lớp Program).
  • Các phương thức interface không có phần thân - phần thân được cung cấp bởi lớp "implement".
  • Khi triển khai một interface, bạn phải ghi đè tất cả các phương thức của nó.
  • Các interface có thể chứa các thuộc tính và phương thức, nhưng không phải các trường / biến.
  • Các thành viên dữ liệu của interface theo mặc định abstractvà public
  • Một interface không thể chứa Constructor (vì nó không thể được sử dụng để tạo đối tượng)

3. Implement nhiều interface trong C#

Để implement nhiều interface, hãy phân tách chúng bằng dấu phẩy:

using System;

namespace Csharp
{
    interface IFirstInterface
    {
        void myMethod(); // phuong thuc interface
    }

    interface ISecondInterface
    {
        void myOtherMethod(); // phuong thuc interface
    }

    // Implement nhiều interface
    class DemoClass : IFirstInterface, ISecondInterface
    {
        public void myMethod()
        {
            Console.WriteLine("Kiem tra IFirstInterface...");
        }
        public void myOtherMethod()
        {
            Console.WriteLine("Kiem tra ISecondInterface...");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            DemoClass myObj = new DemoClass();
            myObj.myMethod();
            myObj.myOtherMethod();
        }
    }
}
Kết quả:
Kiem tra IFirstInterface...
Kiem tra ISecondInterface...

4. Tại sao và khi nào nên sử dụng interface?

Để đạt được bảo mật - ẩn một số chi tiết nhất định và chỉ hiển thị các chi tiết quan trọng của một đối tượng (giao diện).

C# không hỗ trợ "đa kế thừa" (một lớp chỉ có thể kế thừa từ một lớp cơ sở). Tuy nhiên, nó có thể đạt được với các interface, bởi vì lớp có thể implement nhiều interface. Lưu ý: Để implement nhiều interface, hãy phân tách chúng bằng dấu phẩy (như trong ví dụ bên trên).

Trên đây là bài viết của eLib.VN về Interface trong C#. Việc xây dựng kiến trúc giữa các lớp rất quan trọng điều đó giúp cho chương trình thêm tính chặt chẽ, có logic và giúp cho lập trình viên dễ kiểm soát khi viết code. Chúc các bạn thành công và giữ được đam mê khi học lập trình.

Ngày:31/10/2020 Chia sẻ bởi:Denni Trần

CÓ THỂ BẠN QUAN TÂM