Một lớp trừu tượng trông rất giống giao diện, nhưng khái niệm này hơi khó hiểu đối với người mới bắt đầu OOP. Về mặt khái niệm, một lớp trừu tượng trông giống như một giao diện, tất nhiên, không có bất kỳ triển khai nào, tuy nhiên chúng có sự khác biệt công bằng của chúng. Trong khi một lớp trừu tượng có thể được thực hiện một phần hoặc toàn bộ, một giao diện phải được thực hiện hoàn toàn. Chà, sự khác biệt đáng chú ý nhất giữa hai lớp là một lớp trừu tượng có thể có triển khai mặc định, trong khi một giao diện chỉ là định nghĩa của các phương thức chỉ chứa các khai báo thành viên. Chúng ta hãy thảo luận về các khía cạnh lý thuyết của cả hai chi tiết.
Một lớp trừu tượng là một loại lớp đặc biệt hoạt động như một cơ sở của các lớp khác và không thể được khởi tạo. Logic thực hiện của một lớp trừu tượng được cung cấp bởi các lớp dẫn xuất của nó. Để tạo ra một bản tóm tắt lớp, công cụ sửa đổi trừu tượng của người dùng được sử dụng có nghĩa là một số triển khai còn thiếu cần phải được thực hiện trong lớp có nguồn gốc từ nó. Nó chứa cả các thành viên trừu tượng và không trừu tượng. Một lớp trừu tượng nhằm cung cấp chức năng cơ bản có thể được chia sẻ và ghi đè thêm bởi nhiều lớp dẫn xuất. Nó rất hữu ích để tránh bất kỳ loại trùng lặp mã. Chúng trông rất giống giao diện nhưng có thêm chức năng.
Mặt khác, một giao diện không phải là một lớp chỉ chứa chữ ký của chức năng. Đó là một mô hình không có triển khai. Về mặt khái niệm, đó chỉ là định nghĩa về các phương thức chỉ chứa phần khai báo của các thành viên. Đó là một cái vỏ rỗng không chứa sự thực thi của các thành viên. Nó giống như một lớp cơ sở trừu tượng chỉ chứa các thành viên trừu tượng như phương thức, sự kiện, bộ chỉ mục, thuộc tính, v.v. Nó không thể được khởi tạo trực tiếp và các thành viên của nó có thể được thực hiện bởi bất kỳ lớp nào. Ngoài ra, nhiều giao diện có thể được thực hiện bởi một lớp, tuy nhiên, một lớp chỉ có thể kế thừa một lớp duy nhất.
Lớp trừu tượng | Giao diện |
Một lớp trừu tượng có thể có tất cả các sửa đổi truy cập để khai báo thành viên của các hàm, lớp con và thuộc tính. | Một giao diện không được phép có các sửa đổi truy cập để khai báo thành viên các hàm, subs, thuộc tính, v.v ... Tất cả các thành viên được coi là công khai ngầm. |
Một lớp chỉ có thể sử dụng nhiều nhất một lớp trừu tượng. | Một lớp có thể kế thừa bất kỳ số lượng giao diện. |
Nhiều kế thừa không được hỗ trợ trong lớp trừu tượng. | Một giao diện có thể hỗ trợ nhiều kế thừa. |
Về mặt kỹ thuật, đó là một lớp có thể có hoặc không chứa cả định nghĩa và cách triển khai của nó. | Một giao diện chỉ có thể có chữ ký của chức năng nên về cơ bản nó là một vỏ trống. |
Một lớp trừu tượng có thể chứa các thành viên. consts, phương thức xác định và cuống phương thức. | Một giao diện chỉ có thể chứa các phương thức và hằng. |
Nó định nghĩa danh tính cốt lõi của một lớp và được sử dụng để mô tả các đối tượng có cùng kiểu dữ liệu. | Nó được sử dụng để mô tả các khả năng ngoại vi của một lớp. |
Thành viên của một lớp trừu tượng không thể tĩnh trừ khi đó là Thành viên hoàn chỉnh. | Các thành viên của một giao diện không thể tĩnh. |
Đó là lý tưởng để thực hiện cùng loại và hành vi phổ biến. | Tốt hơn là sử dụng giao diện nếu một số triển khai chỉ chia sẻ chữ ký phương thức. |
Nó có thể có khai báo constructor. | Nó không thể có khai báo constructor. |
Một lớp trừu tượng có các trường và các hằng số được xác định trước. | Các trường không thể được xác định trong giao diện. |
Nó có thể có cả phương pháp trừu tượng và không trừu tượng. | Nó chỉ có thể có các phương thức trừu tượng. |
Sự khác biệt giữa một lớp trừu tượng và một giao diện là gì? Đây có lẽ là một trong những câu hỏi phổ biến nhất được hỏi trong bất kỳ cuộc phỏng vấn kỹ thuật nào. Bạn có thể tìm thấy rất nhiều thông tin về các lớp và giao diện trừu tượng trong bất kỳ hướng dẫn C # nào, tuy nhiên, hiểu được sự khác biệt giữa hai điều này là một phần khá khó khăn. Bạn có thể hợp nhất tất cả thông tin bạn có thể tìm thấy và vẫn không thể có đủ. Vâng, về mặt khái niệm cả hai đều là những thuật ngữ quan trọng nhất trong lập trình và khá giống nhau, tuy nhiên, chúng khác nhau rất nhiều về chức năng. Trong khi một lớp trừu tượng là một loại lớp đặc biệt hoạt động như một cơ sở cho các lớp khác, mặt khác, một giao diện chỉ là một vỏ rỗng với chỉ các khai báo thành viên.