Tương tự như trong Java, C# cũng có tính kế thừa. Để tìm hiểu chi tiết về tính kế thừa (Inheritance) trong C#, bạn đọc cùng tham khảo bài viết dưới đây của Taimienphi.vn nhé.
Tính kế thừa (Inheritance) trong C#
Tính kế thừa (Inheritance) là yếu tố quan trọng trong lập trình hướng đối tượng (Object Oriented Programming). Nó là một cơ chế trong C#, theo đó một lớp được phép kế thừa các tính năng (trường và phương thức) của lớp khác.
1.1. Một số thuật ngữ quan trọng:
- Super Class: Lớp có các tính năng được kế thừa được gọi là Super Class (hay lớp cơ sở hoặc lớp cha).
- Lớp con (Sub Class): Lớp kế thừa lớp khác được gọi là lớp con (hay còn gọi là lớp dẫn xuất, lớp mở rộng). Lớp con có thể thêm các trường và phương thức riêng, ngoài trường và phương thức của lớp cha.
- Reusability (khả năng sử dụng lại): Tính kế thừa hỗ trợ khái niệm "reusability", tức là khi chúng ta muốn tạo một lớp mới và đã có một lớpbao gồm một số mã mà chúng ta muốn, chúng ta có thể lấy lớp mới từ lớp hiện có. Bằng cách này, chúng ta đang sử dụng lại các trường và phương thức của lớp hiện có.
Biểu tượng của tính kế thừa trong C# là dấu hai chấm (:).
Cú pháp:
Ví dụ:
Trong ví dụ về tính kế thừa trong C# dưới đây, lớp GFG là lớp cơ sở, lớp GeekforGeek là lớp dẫn xuất, mở rộng lớp GFG và lớp Sudo là lớp điều khiển để chạy chương trình.
Kết quả đầu ra có dạng:
Dưới đây là danh sách các loại kế thừa khác nhau trong C#:
3.1. Kế thừa một cấp (Single Inheritance)
Trong kế thừa một cấp, các lớp con kế thừa các tính năng của lớp cha. Trong hình minh họa dưới đây, lớp A đóng vai trò là lớp cơ sở cho lớp dẫn xuất B.
3.2. Kế thừa nhiều cấp (Multilevel Inheritance)
Trong kế thừa nhiều cấp, lớp dẫn xuất sẽ được kế thừa một lớp cơ sở, và lớp dẫn xuất này cũng đóng vai trò là lớp cơ sở cho lớp khác. Trong hình minh họa dưới đây, lớp A đóng vai trò là lớp cơ sở cho lớp dẫn xuất B, lớp B đóng vai trò là lớp cơ sở cho lớp dẫn xuất C.
3.3. Kế thừa phân cấp (Hierarchical Inheritance)
Trong kế thừa phân cấp, một lớp đóng vai trò là lớp cha (super class hay lớp cơ sở) cho nhiều lớp con khác. Trong hình dưới đây, lớp A đóng vai trò là lớp cơ sở cho lớp dẫn xuất B, C và D.
3.4. Đa kế thừa trong C# (Multiple Inheritance)
Trong đa kế thừa, một lớp có thể có nhiều hơn một lớp cha và kế thừa từ tất cả các lớp cha. Một lưu ý nhỏ là C# không hỗ trợ đa kế thừa đối với các lớp. Trong C#, chúng ta có thể thực hiện đa kế thừa thông qua giao diện (interface). Trong hình minh họa dưới đây, lớp C có nguồn gốc từ giao diện A và B.
3.5. Hybrid Inheritance
Hybrid Inheritance là sự kết hợp của 2 hoặc nhiều loại kế thừa trên. Vì C# không hỗ trợ đa kế thừa với các lớp, nên hybrid inheritance cũng không hỗ trợ triển khai với các lớp. Trong C#, chúng ta có thể thực hiện Hybrid Inheritance thông qua giao diện.
- Lớp cha mặc định: Ngoài trừ lớp Object không có lớp cha, mỗi lớp chỉ có một lớp cha trực tiếp (kế thừa một cấp). Trong trường hợp không có lớp cha rõ ràng, mỗi lớp là một lớp con của lớp Object.
- Lớp cha chỉ có một: Một lớp cha có thể có nhiều lớp con, nhưng một lớp con chỉ có thể có một lớp cha. Điều này là bởi vì C# không hỗ trợ đa kế thừa với các lớp. Mặc dù đa kế thừa hỗ trợ C# thông qua giao diện.
- Kế thừa Constructors trong C#: Một lớp con kế thừa tất cả các thành viên (trường, phương thức) từ lớp cha của nó. Các Constructor không phải là thành viên, vì vậy nó không được kế thừa bởi các lớp con, nhưng Constructor của lớp cha có thể được gọi từ lớp con.
- Kế thừa thành viên riêng: Một lớp con không kế thừa các thành viên riêng của lớp cha. Tuy nhiên nếu lớp cha có các thuộc tính (phương thức get và set) để truy cập các trường riêng của nó thì một lớp con có thể kế thừa.
Bài viết trên đây Taimienphi.vn vừa giới thiệu cho bạn về tính kế thừa (Inheritance) trong C#. Hy vọng bài viết trên đây sẽ cung cấp cho bạn các thông tin, kiến thức bổ ích mới về C# nhé. Ngoài ra bạn đọc có thể tham khảo thêm một số bài viết khác đã có trên Taimienphi.vn để tìm hiểu rõ hơn về mảng trong C# cũng như chuỗi trong C# nhé.