
2025-10-29 21:36 • 14 min read • 37 views
Trong lập trình hướng đối tượng (OOP), đặc biệt khi bạn phát triển ứng dụng bằng .NET Core, bạn sẽ thường gặp ba khái niệm quan trọng:
Chúng đều được dùng để mô hình hóa đối tượng và hành vi, nhưng cách sử dụng hoàn toàn khác nhau.
Bài viết này sẽ giúp bạn hiểu rõ bản chất, sự khác nhau và cách dùng chính xác trong thực tế.
Class là bản thiết kế (blueprint) để tạo ra đối tượng (object).
Bên trong class có thể chứa:
✔ Properties
✔ Methods (hàm)
✔ Fields
✔ Constructors
✔ Sự kiện, indexer, virtual methods...
📌 Ví dụ:
Bạn có thể khởi tạo object:
Là lớp dùng để kế thừa, không thể tạo object trực tiếp bằng new.
✔ Có thể chứa methods bình thường
✔ Có thể chứa abstract methods — bắt buộc class con override
✔ Có constructor
✔ Dùng để chia sẻ logic chung cho các lớp con
❌ Chỉ kế thừa 1 abstract class
📌 Ví dụ:
=> thần chú: không phải thực thể, không thể tạo instance, có thể tự triển khai method bên trong, method thuộc tính abstract bắt buộc thằng kế thừa phải override
Là bản hợp đồng chỉ mô tả hành vi, không có trạng thái nội tại.
✔ Chỉ chứa phần khai báo hàm (không có logic)
✔ Không có constructor
✔ Một class có thể implement nhiều interface
✔ Giúp cấu trúc phần mềm linh hoạt (Dependency Injection rất hay dùng)
⭕ Từ C# 8 trở lên: interface có thể có default method
📌 Ví dụ:
=> thần chú: không là thực thể, không thể tạo instance, không thể tự triển khai method
🔥 Bảng so sánh nhanh
🎯 Khi nào dùng cái nào?
Lý thuyết xong rồi vào thực hành thôi: làm tiếp video ngày 9 khởi tạo project .net core nè:
📌 Interface dùng để tạo quy tắc chung: Ví dụ mình có api login trong authcontroller. Nhưng nguyên tắc là không để logic chính trong tầng trong controller, người ta thường tạo 1 tầng riêng xử lý logic thường được gọi là business. Ở bài này mình hơi ăn gian 1 chút, sẽ tạm bỏ qua tầng service ha. Bài khác mình sẽ bổ sung.
Sau đó mình tạo 1 folder Business, rồi tạo class AuthBusiness.cs
Sau khi xong thì tiến hành đăng ký:
Sau đó chỉ cần khai báo trong authcontroller và dùng thôi:
✅ Kết luận
Hiểu rõ 3 khái niệm này giúp bạn:
Q: Một class có thể implement nhiều interface không?
A: Có. C# cho phép class implement nhiều interface, hỗ trợ đa kế thừa hành vi.
Q: Interface có chứa fields không?
A: Không. Interface chỉ chứa khai báo hành vi. Tuy nhiên từ C# 8 có thể có default implementation và static members.
Q: Abstract class có constructor không?
A: Có. Constructor trong abstract class được dùng để khởi tạo state hoặc logic chung cho subclass.
Q: Khi nào ưu tiên abstract class hơn interface?
A: Khi cần logic dùng chung, có state dùng lại, hoặc muốn tránh lặp code giữa các class kế thừa.
Q: So sánh class và interface?
A: Interface là hợp đồng hành vi — không thể tạo instance, không chứa state. Class mô tả một đối tượng hoàn chỉnh — có state, constructor và tạo instance được.
Was this article helpful?