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 ạ.

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Võ Trường Phúc đã bình luận 08:33 25-01-2018

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.

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.

ndq3004 đã bình luận 22:29 26-01-2018

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.

Nguyễn Thái Hải đã bình luận 11:06 25-01-2018

Để 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

Câu hỏi mới nhất