C # Kế thừa & Đa hình với các ví dụ

Mục lục:

Anonim

Trong hướng dẫn này, bạn sẽ học-

  • Di sản
  • Tính đa hình

Kế thừa trong C # là gì?

Kế thừa là một khái niệm quan trọng trong C #. Kế thừa là một khái niệm trong đó bạn định nghĩa các 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 yêu cầu. 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.

Bạn sẽ hiểu rõ hơn nếu chúng tôi thấy hành động này.

Bây giờ chúng ta 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 chúng ta.

Bước 1) Bước đầu tiên là thay đổi mã cho lớp Hướng dẫn của chúng tôi. 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 quyền truy cập của 'protected' vào cả trường TutorialID và TutorialName.

Hãy nhớ rằng chúng tôi đã đề cập đến công cụ sửa đổi quyền truy cập này trong hướng dẫn Công cụ sửa đổi quyền truy cập. Ở đây bạn có thể thấy mục đích của việc này. Chỉ khi bạn có công cụ sửa đổi quyền truy cập này (được bảo vệ), 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". Trong bước này, chúng tôi thêm mã bên dưới vào tệp Tutorial.cs. Mã phải được đặt sau định nghĩa lớp Hướng dẫn.

Giải thích mã: -

  1. Bước đầu tiên là tạo lớp con Guru99Tutorial. Chúng ta cũng cần phải đề cập rằng lớp này sẽ là một lớp con của lớp Hướng dẫn. Điều này được thực hiện bởi từ khóa ':'.
  2. Tiếp theo, chúng ta đang định nghĩa một phương thức có tên là 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 có chứa tên mới của Hướng dẫn.
  3. 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 xác định trường TutorialName trong lớp "Guru99Tutorial", chúng tôi vẫn có thể truy cập trường này. Điều này là do thực tế là "Guru99Tutorial" là một lớp con của lớp Hướng dẫn. Và bởi vì chúng tôi đã đặt các trường của lớp Hướng dẫn là được bảo vệ, nên lớp này có thể truy cập chúng.

Bước 3) Bước cuối cùng là sửa đổi tệp Program.cs chính của chúng tôi. Trong ứng dụng bảng điều khiển của chúng tôi, chúng tôi sẽ tạo một đối tượng của lớp Guru99Tutorial. Với đối tượng này, chúng ta sẽ gọi phương thức RenameTutorial. Sau đó, chúng tôi sẽ hiển thị trường TutorialName với sự trợ giúp của phương thức GetTutorial.

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DemoApplication{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();}}}

Giải thích mã: -

  1. Bước đầu tiên là tạo một đối tượng cho lớp Guru99Tutorial. Điều này được thực hiện thông qua từ khóa 'mới'. Lưu ý rằng lần này chúng tôi không tạo một đối tượng của lớp Hướng dẫn.
  2. Chúng tôi sử dụng phương thức RenameTutorial của lớp Guru99Tutorial để thay đổi trường TutorialName. Chúng tôi chuyển chuỗi ".Net by Guru99" vào phương thức RenameTutorial.
  3. Sau đó, chúng tôi 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 lớp Guru99Tutorial, chúng ta vẫn có thể truy cập phương thức này. Đầu ra của phương thức GetTutorial sau đó được hiển thị trên bảng điều khiển thông qua phương thức Console.WriteLine.

Nếu mã trên được nhập đúng cách và chương trình được thực hiện 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 trường TutorialName đã được đổi tên thành ".Net by Guru99". Điều này được thực hiện nhờ phương thức RenameTutorial được gọi bởi lớp con.

Đa hình trong C # là gì?

Đa hình là một khái niệm OOP trong đó một tên có thể có nhiều dạng.

Ví dụ, bạn có một chiếc điện thoại thông minh để liên lạc. Chế độ giao tiếp bạn chọn có thể là bất cứ điều gì. Nó có thể là một cuộc gọi, một tin nhắn văn bản, một tin nhắn hình ảnh, thư từ,… Vì vậy, mục tiêu chung là giao tiếp, nhưng cách tiếp cận của họ khác nhau. Đây được gọi là Đa hình.

Bạn sẽ hiểu rõ hơn nếu chúng tôi thấy hành động này.

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 chúng ta.

Bước 1) Bước đầu tiên là thay đổi mã cho lớp Hướng dẫn của chúng tôi. Trong bước này, chúng tôi thêm mã bên dưới vào tệp Tutorial.cs.

Giải thích mã: -

1 & 2) Bước đầu tiên giống như trong các ví dụ trước đó của chúng tôi. Chúng tôi đang giữ nguyên định nghĩa của phương thức SetTutorial.

3) Phương pháp này đặt TutorialID và TutorialName dựa trên các tham số pID và pName.

4) Đây là nơi chúng tôi thực hiện thay đổi đối với lớp của mình, trong đó chúng tôi thêm một phương thức mới có cùng tên SetTutorial. Chỉ lần này chúng tôi 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à sửa đổi tệp Program.cs chính của chúng tôi. Trong ứng dụng bảng điều khiển của chúng tôi, chúng tôi sẽ tạo một đối tượng của lớp Guru99Tutorial.

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();}}}

Giải thích mã: -

  1. Trong bước đầu tiên, chúng tôi đang sử dụng phương thức SetTutorial với 2 tham số. Nơi chúng tôi đang chuyển cả TutorialID và TutorialName cho phương thức này.
  2. Trong bước thứ hai, bây giờ chúng ta đ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 cách và chương trình được chạy, kết quả sau sẽ được hiển thị. Nếu trong trường hợp bạn cũng muốn tìm nạp ID hướng dẫn cùng với Tên hướng dẫn, bạn nên làm theo bước dưới đây

  1. Tạo một phương thức riêng được gọi là public int GetTutorialID
  2. 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 rằng cả hai phương thức đã đượ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 đến bảng điều khiển.

Tóm lược

  • Kế thừa là nơi một lớp con kế thừa các trường và phương thức của lớp cha. Sau đó, lớp con cũng có thể định nghĩa các phương thức của riêng nó.
  • Đa hình là một khái niệm OOP trong đó một tên có thể có nhiều dạng.