Kế thừa và đa hình trong C# với các ví dụ về chương trình
⚡ Tóm tắt thông minh
Kế thừa và đa hình là hai nguyên tắc cốt lõi của lập trình hướng đối tượng trong C#. Kế thừa cho phép lớp con tái sử dụng các trường và phương thức của lớp cha, trong khi đa hình cho phép một tên phương thức có nhiều dạng khác nhau.

Kế thừa trong C# là gì?
di sản là một khái niệm quan trọng của C#. Kế thừa là một khái niệm trong đó bạn xác định lớp cha và lớp con. Các lớp con kế thừa các phương thức và thuộc tính của lớp cha, nhưng đồng thời, chúng cũng có thể sửa đổi hành vi của các phương thức nếu cần. Lớp con cũng có thể định nghĩa các phương thức của riêng nó nếu được yêu cầu.
Chúng ta hãy hiểu rõ hơn về Kế thừa C# bằng một ví dụ về chương trình:
Ví dụ về kế thừa C#
Bây giờ hãy xem cách chúng ta có thể kết hợp khái niệm kế thừa trong mã của mình.
Bước 1) Bước đầu tiên là thay đổi mã cho lớp Hướng dẫn của chúng ta. Trong bước này, chúng tôi thêm mã bên dưới vào tệp Tutorial.cs.
Lưu ý rằng bây giờ chúng ta cần thêm công cụ sửa đổi truy cập 'được bảo vệ' vào cả trường TutorialID và TutorialName.
Hãy nhớ rằng chúng ta đã đề cập đến công cụ điều chỉnh quyền truy cập này trong phần trước. Hướng dẫn về Access ModifierVâng, ở đây bạn có thể thấy mục đích của việc này. Chỉ khi có từ khóa truy cập (protected), lớp con mới có thể sử dụng các trường của lớp cha.
Bước 2) Bước thứ hai là thêm lớp con mới của chúng ta. Tên của lớp này sẽ là “Guru99Tutorial”. Ở bước này, chúng ta thêm đoạn mã sau vào tệp Tutorial.cs. Đoạn mã này nên được đặt sau phần định nghĩa lớp Tutorial.
Code Giải trình:-
- Bước đầu tiên là tạo ra GuruLớp con 99Tutorial. Chúng ta cũng cần lưu ý rằng lớp này sẽ là lớp con của lớp Tutorial. Điều này được thực hiện bằng từ khóa ':'.
- Tiếp theo, chúng ta định nghĩa một phương thức có tên RenameTutorial. Nó sẽ được sử dụng để đổi tên trường TutorialName. Phương thức này chấp nhận một biến chuỗi chứa tên mới của Hướng dẫn.
- Sau đó chúng tôi đã gán tham số pNewName cho trường TutorialName. Lưu ý: – Mặc dù chúng tôi chưa định nghĩa trường TutorialName trong “GuruTrong lớp học “99Tutorial”, chúng ta vẫn có thể truy cập vào lĩnh vực này. Điều này là do thực tế là “Guru"99Tutorial" là một lớp con của lớp Tutorial. Và vì chúng ta đã đặt các trường của lớp Tutorial là protected, nên lớp này có thể truy cập chúng.
Bước 3) Bước cuối cùng là chỉnh sửa tệp Program.cs chính của chúng ta. Trong ứng dụng console, chúng ta sẽ tạo một đối tượng của... GuruLớp 99Tutorial. Với đối tượng này, chúng ta sẽ gọi phương thức RenameTutorial. Sau đó, chúng ta sẽ hiển thị trường TutorialName bằng cách sử dụng phương thức GetTutorial.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { public class Tutorial { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public String GetTutorial() { return TutorialName; } } public class Guru99Tutorial:Tutorial { public void RenameTutorial(String pNewName) { TutorialName=pNewName; } static void Main(string[] args) { Guru99Tutorial pTutor=new Guru99Tutorial(); pTutor.RenameTutorial(".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code Giải trình:-
- Bước đầu tiên là tạo một đối tượng cho GuruLớp hướng dẫn 99. Việc này được thực hiện thông qua từ khóa 'new'. Lưu ý rằng lần này chúng ta không tạo một đối tượng của lớp hướng dẫn.
- Chúng tôi sử dụng phương pháp RenameTutorial của... GuruLớp 99Tutorial dùng để thay đổi trường TutorialName. Chúng ta truyền chuỗi “.Net by Guru99” đến phương pháp RenameTutorial.
- Sau đó, chúng ta gọi phương thức GetTutorial. Lưu ý rằng mặc dù phương thức này không được định nghĩa trong... GuruĐối với lớp 99Tutorial, chúng ta vẫn có thể truy cập phương thức này. Kết quả của phương thức GetTutorial sau đó được hiển thị ra console thông qua phương thức Console.WriteLine.
Nếu mã trên được nhập đúng và chương trình được thực thi thành công, kết quả sau sẽ được hiển thị.
Đầu ra:
Từ kết quả đầu ra, chúng ta có thể thấy rõ ràng rằng trường TutorialName đã được đổi tên thành “.Net by” Guru99”. Điều này có thể thực hiện được nhờ phương thức RenameTutorial được gọi bởi lớp con.
Đa hình trong C# là gì?
Tính đa hình in C# Đây là một khái niệm trong lập trình hướng đối tượng (OOP) mà trong đó một tên gọi có thể có nhiều hình thức khác nhau. Ví dụ, bạn có một chiếc điện thoại thông minh để liên lạc. Chế độ liên lạc bạn chọn có thể là bất cứ thứ gì. Đó có thể là cuộc gọi, tin nhắn văn bản, tin nhắn hình ảnh, thư điện tử, v.v. Vì vậy, mục tiêu chung là liên lạc, nhưng cách tiếp cận của chúng lại khác nhau. Điều này được gọi là đa hình (Polymorphism).
Bạn sẽ hiểu rõ hơn về Đa hình C# bằng Ví dụ về chương trình bên dưới:
Ví dụ về đa hình trong C#
Bây giờ chúng ta hãy xem làm thế nào chúng ta có thể kết hợp khái niệm Đa hình trong mã của mình.
Bước 1) Bước đầu tiên là thay đổi mã cho lớp Hướng dẫn của chúng ta. Trong bước này, chúng tôi thêm mã bên dưới vào tệp Tutorial.cs.
Code Giải trình:-
1 & 2) Bước đầu tiên cũng giống như trong các ví dụ trước. Chúng ta tiếp tục...ping Định nghĩa của phương thức SetTutorial như hiện tại.
3) Phương thức này đặt TutorialID và TutorialName dựa trên các tham số pID và pName.
4) Đây là nơi chúng ta thực hiện thay đổi đối với lớp của mình, trong đó chúng ta thêm một phương thức mới có cùng tên là SetTutorial. Chỉ lần này chúng ta chỉ truyền một tham số là pName. Trong phương pháp này, chúng tôi chỉ đặt trường TutorialName thành pName.
Bước 2) Bước cuối cùng là chỉnh sửa tệp Program.cs chính của chúng ta. Trong ứng dụng console, chúng ta sẽ tạo một đối tượng của... GuruLớp học hướng dẫn 99.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { public int TutorialID; public string TutorialName; public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public void SetTutorial(string pName) { TutorialName=pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Tutorial pTutor=new Tutorial(); pTutor.SetTutorial(1,"First Tutorial"); Console.WriteLine(pTutor.GetTutorial()); pTutor.SetTutorial("Second Tutorial"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code Giải trình:-
- Ở bước đầu tiên, chúng ta sử dụng phương thức SetTutorial với 2 tham số. Nơi chúng tôi chuyển cả TutorialID và TutorialName cho phương thức này.
- Ở bước thứ hai, chúng ta hiện đang gọi phương thức SetTutorial chỉ với một tham số. Chúng tôi chỉ chuyển TutorialName cho phương thức này.
Nếu mã trên được nhập đúng và chương trình được chạy, đầu ra sau sẽ được hiển thị. Trong trường hợp bạn muốn lấy cả ID hướng dẫn cùng với Tên hướng dẫn, bạn nên làm theo các bước dưới đây
- Tạo một phương thức riêng gọi là public int GetTutorialID
- Trong phương thức đó, hãy viết dòng mã “return TutorialID.” Điều này có thể được sử dụng để trả lại TutorialID cho chương trình gọi.
Đầu ra:
Từ kết quả đầu ra, chúng ta có thể thấy rõ rằng cả hai phương thức đều được gọi thành công. Do đó, các chuỗi “Hướng dẫn đầu tiên” và “Hướng dẫn thứ hai” đã được gửi tới bảng điều khiển.







