Nội dung chính
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
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 VietTutsCsharp { // 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)
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 VietTutsCsharp { 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...
Tại sao và khi nào nên sử dụng interface?
1) Để đạ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).
2) 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).