Chủ Nhật , 25 Tháng Mười 2020
Trang chủ / HỌC LẬP TRÌNH / C# [C Sharp] / [Học lập trình] – C# – [Bài 30] Giao diện trong C#

[Học lập trình] – C# – [Bài 30] Giao diện trong C#

Giao diện trong C# (Interface)


Giao diện – Interfaces

Một cách khác để đạt được sự trừu tượng hóa trong C# là sử dụng giao diện.

Một giao diện interface là một lớp trừu tượng hoàn toàn, có nghĩa là nó chỉ bao gồm các thuộc tính và các phương thức trừu tượng (không có phần thân):

Ví dụ

// interface
interface Animal 
{
  void animalSound(); // interface method (does not have a body)
  void run(); // interface method (does not have a body)
}

Một cách tốt để đặt tên giao diện là bắt đầu với ký tự “I”, sẽ giúp chúng ta nhớ rằng đó là một giao diện chứ không phải một lớp.

Theo mặc định, các thành phần của một giao diện là abstractpublic.

Chú ý: Giao diện có thể bao gồm các thuộc tính và các phương thức, nhưng không chứa các trường.

Để truy xuất các phương thức của giao diện, giao diện phải được “hoàn thiện” bởi lớp khác. Để hoàn thiện một giao diện, ta sử dụng dấu hai chấm (:) như với thừa kế. Phần thân của phương thức giao diện được cung cấp bởi lớp “hoàn thiện”. Chú ý rằng, chúng ta không phải sử dụng từ khóa override khi hoàn thiện giao diện:

Ví dụ

// Interface
interface IAnimal 
{
  void animalSound(); // interface method (does not have a body)
}

// Pig "implements" the IAnimal interface
class Pig : IAnimal 
{
  public void animalSound() 
  {
    // The body of animalSound() is provided here
    Console.WriteLine("The pig says: wee wee");
  }
}

class Program 
{
  static void Main(string[] args) 
  {
    Pig myPig = new Pig();  // Create a Pig object
    myPig.animalSound();
  }
}

Chạy ví dụ »

Các chú ý về giao diện:

  • Giống như lớp trừu tượng/abstract classes, giao diện không thể được sử dụng để tạo các đối tượng (trong ví dụ trên, không thể tạo một đối tượng “IAnimal” trong lớp Program)
  • Các phương thức của giao diện không có phần thân – phần thân được cung cấp bởi lớp “hoàn thiện”.
  • Khi hoàn thiện một giao diện, chúng ta phải nạp chồng/ghi đè tất cả các phương thức của nó
  • Giao diện chứa các thuộc tính và các phương thức, nhưng không chứa các trường/biến
  • Các thành phần của giao diện mặc định là trừu tượng và công khai
  • Giao diện không chứa hàm dựng (nó không được sử dụng để tạo đối tượng)

Tại sao và khi nào sử dụng giao diện?

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

2) C# không hỗ trợ đa thừa kế / “multiple inheritance” (một lớp chỉ có thể thừa kế từ một lớp cơ sở). Tuy nhiên, điều đó có thể đạt được với các giao diện, bởi vì một lớp có thể triển khai hoàn thiện nhiều giao diện. Chú ý: Để triển khai hoàn thiện nhiều giao diện, phân tách chúng bằng dấu phẩy (xem ví dụ bên dưới).


Đa giao diện / Multiple Interfaces

Để triển khai hoàn thiện đa giao diện, phân tác chúng bằng dấu phẩy:

Ví dụ

interface IFirstInterface 
{
  void myMethod(); // interface method
}

interface ISecondInterface 
{
  void myOtherMethod(); // interface method
}

// Implement multiple interfaces
class DemoClass : IFirstInterface, ISecondInterface 
{
  public void myMethod() 
  {
    Console.WriteLine("Some text..");
  }
  public void myOtherMethod() 
  {
    Console.WriteLine("Some other text...");
  }
}

class Program 
{
  static void Main(string[] args)
  {
    DemoClass myObj = new DemoClass();
    myObj.myMethod();
    myObj.myOtherMethod();
  }
}

Chạy ví dụ »

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *