Tương tự như trong Java, C# cũng hỗ trợ tính Kế Thừa. Để tìm hiểu chi tiết về Tính Kế Thừa trong C#, mời bạn đọc tham khảo bài viết dưới đây từ Mytour.
Tính Kế Thừa (Inheritance) trong C#
1. Tính Kế Thừa (Inheritance) trong C#.
1.1. Các Thuật Ngữ Quan Trọng.
2. Ứng Dụng Tính Kế Thừa trong C#.
3. Các Loại Tính Kế Thừa trong C#.
3.1. Kế Thừa Một Cấp (Single Inheritance).
3.2. Kế Thừa Nhiều Cấp (Multilevel Inheritance).
3.3. Kế Thừa Phân Cấp (Hierarchical Inheritance).
3.4. Đa Kế Thừa trong C# (Multiple Inheritance).
3.5. Kế Thừa Hybride.
4. Một Số Lưu Ý về Tính Kế Thừa trong C#.
1. Tính Kế Thừa (Inheritance) trong C#
Tính Kế Thừa (Inheritance) đóng vai trò quan trọng trong lập trình hướng đối tượng (Object Oriented Programming) của C#. Đây là một cơ chế cho phép lớp thừa hưởng các đặc tính (trường và phương thức) từ lớp khác.
1.1. Các Thuật Ngữ Quan Trọng:
- Lớp Cha (Super Class): Lớp chứa các tính năng được kế thừa được gọi là Lớp Cha (hay còn được biết đến là Lớp Cơ Sở hoặc Lớp Cha).
- Lớp Con (Sub Class): Lớp kế thừa từ lớp khác được gọi là Lớp Con (hay còn được biết đến là Lớp Dẫn Xuất hoặc Lớp Mở Rộng). Lớp Con có khả năng thêm vào các trường và phương thức riêng, bổ sung vào những thứ đã có từ Lớp Cha.
2. Ứng Dụng Tính Kế Thừa trong C#
Biểu tượng của tính Kế Thừa trong C# là dấu hai chấm (:).
Syntax:
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 từ lớp GFG và lớp Sudo là lớp Điều Khiển để thực thi chương trình.
Kết quả cuối cùng sẽ như sau:
3. Loại Tính Kế Thừa Trong C#
Dưới đây là danh sách các dạng Tính Kế Thừa khác nhau trong ngôn ngữ lập trình C#:
3.1. Kế Thừa Một Cấp (Single Inheritance)
Trong loại Kế Thừa Một Cấp, các lớp con sẽ kế thừa các đặc tính từ lớp cha. Trong ví dụ dưới đây, lớp A đóng vai trò là lớp cơ sở cho lớp con B.
3.2. Kế Thừa Nhiều Cấp (Multilevel Inheritance)
Trong Kế Thừa Nhiều Cấp, một lớp dẫn xuất sẽ kế thừa từ 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 hoặc lớp cơ sở) cho nhiều lớp con khác. Trong ví dụ dưới đây, lớp A đóng vai trò là lớp cơ sở cho các lớp con 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. Lưu ý nhỏ là C# không hỗ trợ đa kế thừa 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 ví dụ dưới đây, lớp C có nguồn gốc từ cả giao diện A và B.
3.5. Kế Thừa Hỗn Hợp (Hybrid Inheritance)
Hybrid Inheritance là sự kết hợp độc đáo của 2 hoặc nhiều loại kế thừa trong C#. Vì không có hỗ trợ cho đa kế thừa với các lớp, nên hybrid inheritance không thể triển khai trực tiếp 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.
4. Những Điều Cần Lưu Ý Về Tính Kế Thừa Trong C#
- Lớp Cha Mặc Định: Trừ lớp Object, 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 tự thân là một lớp con của lớp Object.
- Một Lớp Cha Duy Nhấ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à do C# không hỗ trợ đa kế thừa với các lớp. Mặc dù đa kế thừa được hỗ trợ trong C# thông qua giao diện.
- Kế Thừa Constructors Trong C#: Một lớp con thừa hưởng toàn bộ 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 phần thừa hưởng, do đó chúng không được kế thừa bởi lớp con. Tuy nhiên, Constructor của lớp cha có thể được gọi từ lớp con.
- Thừa Hưởng Các Thành Viên Riêng: Lớp con không thừa hưởng 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, thì lớp con có thể thừa hưởng chúng.
Bài viết này của Mytour giới thiệu về tính kế thừa (Inheritance) trong C#. Hy vọng nó mang lại thông tin và kiến thức mới về C# cho bạn. Bạn cũng có thể tham khảo các bài viết khác trên Mytour để hiểu sâu hơn về mảng trong C# và chuỗi trong C#.