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.
Mục lục nội dung
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();
}
}
}
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.
Tham khảo thêm
- doc Cài đặt môi trường C#
- doc Cấu trúc chương trình C#
- doc Cú pháp C# cơ bản
- doc Tìm hiểu về kiểu dữ liệu trong C#
- doc Ép kiểu dữ liệu trong C#
- doc Hằng số (Constant) trong C#
- doc Toán tử trong C#
- doc Lệnh if...else trong C#
- doc Lệnh switch case trong C#
- doc Vòng lặp for và foreach trong C#
- doc Vòng lặp while trong C#
- doc Vòng lặp do-while trong C#
- doc Nullable trong C#
- doc Phương thức trong C#
- doc Class và Object trong C#
- doc Mảng trong C#
- doc Chuỗi (String) trong C#
- doc Cấu trúc (Struct) trong C#
- doc Kiểu Enum trong C#
- doc Namespace trong C#
- doc Regular Expression trong C#
- doc Preprocessor Directive trong C#
- doc Xử lý ngoại lệ trong C#
- doc File I/O trong C#