Trong C#, lớp trừu tượng (abstract class) và giao diện (interface) là hai khái niệm quan trọng trong lập trình hướng đối tượng, nhưng chúng có những đặc điểm và ứng dụng khác nhau.
Lớp Trừu Tượng (Abstract Class):
-
Đặc Điểm Chính:
- Lớp trừu tượng là một lớp mà không thể được khởi tạo trực tiếp, và thường chứa ít nhất một phương thức trừu tượng.
- Phương thức trừu tượng là một phương thức mà chỉ có chữ ký được định nghĩa trong lớp trừu tượng mà không có thân hàm.
-
Sử Dụng:
- Lớp trừu tượng thường được sử dụng khi bạn muốn xác định một bản thiết kế chung cho các lớp con và muốn buộc các lớp con phải triển khai các phương thức cụ thể.
- Bạn không thể tạo một đối tượng từ một lớp trừu tượng, nhưng có thể tạo đối tượng từ một lớp con của nó.
-
Ví dụ:
public abstract class Animal { public abstract void Sound(); } public class Dog : Animal { public override void Sound() { Console.WriteLine("Woof"); } }
Giao Diện (Interface):
-
Đặc Điểm Chính:
- Giao diện chỉ chứa các phần tử trừu tượng như phương thức, thuộc tính, sự kiện, nhưng không có thân hàm.
- Một lớp có thể triển khai nhiều giao diện.
-
Sử Dụng:
- Giao diện thường được sử dụng khi bạn muốn xác định một hợp đồng (contract) chung cho các lớp khác nhau mà không cần quan tâm đến triển khai cụ thể của từng lớp.
- Giao diện cung cấp một cách để đảm bảo tính tuân thủ (compliance) cho các lớp triển khai.
-
Ví dụ:
public interface IShape { double GetArea(); } public class Circle : IShape { private double radius; public Circle(double radius) { this.radius = radius; } public double GetArea() { return Math.PI * radius * radius; } }
Sự Khác Biệt Chính:
-
Đặc Điểm:
- Lớp trừu tượng có thể chứa cả phương thức trừu tượng và không trừu tượng, trong khi giao diện chỉ chứa các thành phần trừu tượng.
- Một lớp chỉ có thể kế thừa một lớp trừu tượng, nhưng có thể triển khai nhiều giao diện.
-
Sử Dụng:
- Sử dụng lớp trừu tượng khi bạn cần chia sẻ mã nguồn và cung cấp một bản thiết kế cơ sở cho các lớp con.
- Sử dụng giao diện khi bạn cần xác định một hợp đồng (contract) cho các lớp và muốn đảm bảo rằng các lớp triển khai tuân thủ hợp đồng đó.
-
Khả Năng Tạo Mới Đối Tượng:
- Lớp trừu tượng: Không thể tạo mới đối tượng trực tiếp từ một lớp trừu tượng.
- Giao diện: Không thể tạo mới đối tượng từ một giao diện. Đối tượng phải được tạo từ một lớp cụ thể triển khai giao diện đó.
-
Hỗ trợ đa kế thừa:
- Lớp trừu tượng: Không hỗ trợ đa kế thừa, một lớp chỉ có thể kế thừa từ một lớp trừu tượng duy nhất.
- Giao diện: Hỗ trợ đa kế thừa, một lớp có thể triển khai nhiều giao diện.
Tóm lại, lớp trừu tượng và giao diện đều là công cụ mạnh mẽ trong lập trình hướng đối tượng, nhưng chúng có mục đích và ứng dụng khác nhau. Lớp trừu tượng thường được sử dụng để xác định một bản thiết kế cơ sở cho các lớp con, trong khi giao diện thường được sử dụng để đảm bảo tính tuân thủ của các lớp với một hợp đồng chung.
Comments