Sự khác biệt giữa lớp trừu tượng và giao diện trong C #

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à gì?

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.

Giao diện là gì?

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 so với giao diện: sự khác biệt giữa lớp trừu tượng và giao diện trong C #

  1. Đa kế thừa - Một lớp chỉ có thể sử dụng một lớp trừu tượng, do đó nhiều kế thừa không được hỗ trợ. Mặt khác, một giao diện có thể hỗ trợ nhiều kế thừa, có nghĩa là một lớp có thể kế thừa bất kỳ số lượng thừa kế nào.
  2. Định nghĩa  của Lớp trừu tượng và giao diện trong C #- Một lớp trừu tượng là một loại lớp đặc biệt có thể chứa định nghĩa mà không có triển khai. Logic thực hiện được cung cấp bởi các lớp dẫn xuất của nó. Nó có thể có các phương pháp trừu tượng cũng như không trừu tượng. Mặt khác, một giao diện chỉ là một mô hình không thể làm được gì. Về mặt kỹ thuật, nó chỉ là một cái vỏ rỗng.
  3. Thực hiện - Một lớp trừu tượng có thể chứa cả định nghĩa và thực hiện của nó. Đó là một lớp không đầy đủ mà không thể được khởi tạo. Một giao diện chỉ có thể có chữ ký của chức năng mà không có bất kỳ mã nào.
  4.  Sửa đổi truy cập - Một lớp trừu tượng có thể có một số công cụ sửa đổi truy cập như subs, hàm, thuộc tính, v.v., trong khi một giao diện không được phép có các sửa đổi truy cập và tất cả các phương thức phải được định nghĩa ngầm là công khai.
  5. Tính đồng nhất - Một lớp trừu tượng được sử dụng để triển khai cùng loại, hành vi và trạng thái, trong khi giao diện được sử dụng để triển khai chỉ chia sẻ chữ ký phương thức.
  6. Tờ khai - Một lớp trừu tượng hoạt động như một lớp cơ sở cho tất cả các lớp khác để nó có thể khai báo hoặc sử dụng bất kỳ biến nào trong khi giao diện không được phép khai báo bất kỳ biến nào.
  7. Tuyên bố xây dựng - Trong khi một lớp trừu tượng có thể có khai báo hàm tạo, một giao diện không thể có khai báo hàm tạo.
  8. Lõi so với ngoại vi - Một lớp trừu tượng được sử dụng để xác định danh tính cốt lõi của một lớp và có thể được sử dụng cho các đối tượng có cùng kiểu dữ liệu. Mặt khác, một giao diện được sử dụng để xác định khả năng ngoại vi của một lớp.
  9. Cứng nhắc so với dẻo dai - Một lớp trừu tượng dẻo dai hơn về chức năng, ít nhất là từ quan điểm của nhà phát triển, trong khi một giao diện cứng hơn.

Lớp trừu tượng so với giao diện: Biểu mẫu bảng

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.

Tóm lược

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.