Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Interface và Abstract Class trong C# thực chất dùng để làm gì?
00:23 25-01-2018
2.029 lượt xem
4 bình luận
22:29 26-01-2018
Chào anh chị,
Em đang học tới OOP C# thì hơi ngố ngố phần Đa kế thừa và Abstract class.
Em giả sử em có class DongVat, và có 2 class Cho, Meo kế thừa từ class DongVat.
Thế thì em có thể tạo hàm Speak riêng cho 2 class Cho, Meo để nó thực thi cho dễ nhưng trong bài giảng interface em lại thấy mấy anh trong HowKTeam lại không tạo riêng mà tạo thông qua 1 interface, em thấy làm vậy nó dài hơn.
Em tìm hiểu mãi mà chưa rõ rốt cực interface đóng một vai trò như thế nào @@ mong anh chị giúp đỡ, em xin cảm ơn ạ.
Nếu bạn đã học tới phần Interface thì chắc bạn cũng nắm rõ Kế thừa trong C# rồi chứ gì :D
Thì Kế thừa trong C# có một hạn chế là không có Đa kế thừa (VD: Một Class A không thể kế thừa từ 2 Class B,C).
Interface sinh ra để giải quyết vấn đề trên. Giúp ta có thể kế thừa từ nhiều Interface (VD: Một Class A không thể kế thừa từ 2 Class B,C. Nhưng có thể kế thừa từ 2 Interface E,F).
Bạn tham khảo bài dưới đây là rõ ngay: đừng lo :D lúc trước mình cũng gặp tình trạng như bạn khi học OOP
https://o7planning.org/vi/10431/abstract-class-va-interface-trong-csharp
À còn cái này chỉ là môt ví dụ mà a K9 thực hiện cho bạn biết cách khởi tạo cũng như sử dụng 1 Interface như thế nào. Interface nó áp dụng trong nhiều trường hợp hay lắm, chứ không đơn giản như ví dụ a K9 đưa ra đâu.
https://www.youtube.com/watch?v=RcIsb9iFKH8
Abstract class thì nó sẽ tạo ra các hàm trừu tượng chứa trong class đó. Hàm trừu tượng theo mình hiểu là hàm chưa được định nghĩa, tức là nó chưa có hàm thực thi bên trong nó.( như video)
Khi muốn định nghĩa cho một hàm trừu tượng đó trong abstract class thì ta dùng một class mới, định nghĩa cho abstract class chứa hàm. Cái này nó giống kiểu update.
Các trường hợp khác thì bạn xem như trong video đó.
Cho đến khi có một class định nghĩa tất cả các hàm trong abstract class ban đầu thì class đó sẽ không phải khai báo với từ khóa abstract nữa.
Để hiểu rõ hơn về sự đa kế thừa thì bạn nên sử dụng ngôn ngữ C++ để thấy sự phức tạp nó như thế nào