ĐA HÌNH LÀ GÌ

  -  
Khóa học Lập trình Lập trình C# .Net Lập trình OOP.. với C# Đa hình trong Lập trình hướng đối tượng

Dẫn nhập

Tại các bài học trước, họ sẽ cùng cả nhà tò mò về KẾ THỪA TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG . Hôm nay họ đang thuộc tìm hiểu về Đa hình trong C#.

Bạn đang xem: đa hình là gì

Nội dung

Để gọi hiểu bài bác này tốt nhất có thể các bạn đề xuất tất cả kiến thức và kỹ năng cơ bản về các phần:

Trong bài học kinh nghiệm này, họ sẽ cùng tìm hiểu những vấn đề:

Khái niệm tính đa hình.Từ khoá virtual cùng từ khóa override.Lớp trừu tượng với cách tiến hành thuần ảo.

Khái niệm tính nhiều hình

Tính đa hình là hiện tượng lạ những đối tượng người dùng ở trong những lớp khác nhau rất có thể hiểu cùng 1 thông điệp theo những phương pháp khác biệt.

Một ví dụ về đa hình trong thực tế. Ta bao gồm 3 bé vật: chó, mèo, lợn. Cả 3 loài vật này các là động vật. Nhưng khi ta bảo cả 3 động vật hoang dã kêu thì bé chó sẽ kêu gâu gâu, con mèo đã kêu meo meo và con heo đang kêu ẹt ẹt.

Trong ví dụ trên 3 con vật: chó, mèo, lợn xem như thể các đối tượng người sử dụng. Việc ta bảo 3 động vật hoang dã kêu chính là thông điệp. Rõ ràng cả 3 loài vật rất có thể gọi cùng 1 thông điệp là kêu theo các bí quyết khác nhau.

Để biểu lộ được tính đa hình:

Các lớp bắt buộc gồm quan hệ kế thừa với 1 lớp phụ vương nào kia.Pmùi hương thức đa hình buộc phải được ghi đè (override) sinh sống các lớp nhỏ (sẽ tiến hành trình bày ngay lập tức sau đây).

Từ khoá virtual với từ khóa override

Virtual là keyword dùng để knhị báo 1 cách làm ảo (cách làm ảo là cách làm hoàn toàn có thể ghi đnai lưng được).

Override là keywords dùng để ghi lại phương thức ghi đè lên cách làm của lớp cha.

Lưu ý:

Chỉ có thể ghi đè lên trên cách làm virtual hoặc abstract (đã trình diễn tức thì sau đây).Tính đa hình chỉ được bộc lộ khi sẽ ghi đè lên trên cách tiến hành của lớp cha.

lấy ví dụ minh hoạ:

Ta gồm 3 lớp Animal, Cat, Dog. Trong số đó Cat với Dog kề thừa tự lớp Animal. Trong những lớp đều có thủ tục Speak().

class Animal public void Speak() Console.WriteLine(" Animal is speaking. . ."); class Cat : Animal public void Speak() Console.WriteLine(" Cat is speaking. . ."); class Dog : Animal public void Speak() Console.WriteLine(" Dog is speaking. . ."); Ta bao gồm đoạn chương trình trong hàm main như thế này:

Animal mèo = new Cat(); Animal dog = new Dog(); cát.Speak(); dog.Speak();Ta mong ước công tác sẽ call đúng cách thức Speak() của lớp đã được cấp phát vùng nhớ. Nhưng thực tiễn chưa hẳn vậy.

*

Hiện nay ta rất cần được override cách tiến hành Speak() của lớp thân phụ (lớp Animal) cùng nhằm override được thì ta bắt buộc knhì báo cách thức Speak() của lớp phụ vương là cách thức ảo (virtual).

class Animal public virtual void Speak() Console.WriteLine(" Animal is speaking. . ."); class Cat : Animal public override void Speak() Console.WriteLine(" Cat is speaking. . ."); class Dog : Animal public override void Speak() Console.WriteLine(" Dog is speaking. . ."); Chạy lại hàm main trên ta được:

*

Đây cũng chính là ví dụ sử dụng tính nhiều hình.

Xem thêm: Tên Gọi Các Bác Sĩ Nội Trú Tiếng Anh Là Gì, Important Medical Terms

Ta thấy 2 đối tượng người tiêu dùng dog, mèo được cấp phát 2 khoảng nhớ trực thuộc 2 lớp 2 khác biệt tuy nhiên khi cùng gọi phương thơm thức Speak() thì đối tượng người tiêu dùng tmê mẩn chiếu mang lại vùng ghi nhớ của lớp nào sẽ được gọi đúng phương thức của lớp kia.

Lớp trừu tượng với cách tiến hành thuần ảo

Pmùi hương thức thuần ảo là 1 trong thủ tục ảo và không tồn tại khái niệm bên trong.

Lớp trừu tượng là lớp cất phương thức thuần ảo.

Abstract là từ khoá dùng để knhì báo 1 lớp trừu tượng hoặc 1 phương thức thuần ảo.

Xét lại ví dụ trên, Tại trên đây ta xem xét lại cách tiến hành Speak() của lớp Animal ta nhận thấy phần quan niệm của phương thức này chỉ là hình thức sau đó cũng biến thành bị các lớp thừa kế ghi đè lên.

Việc tư tưởng văn bản cách làm không có công dụng gì vậy vì sao ta lại phải định nghĩa chúng?

Câu vấn đáp đã có C# câu trả lời qua từ khóa abstract. Ở đây ta sử dụng abstract để nhấn mạnh vấn đề 2 điều:

Phương thức Speak() rất có thể ghi đè (override).Pmùi hương thức Speak() không tồn tại tư tưởng gì bên trong.

Để knhì báo lớp trừu tượng và cách thức thuần ảo ta chỉ việc thêm khoá abstract vào trước thương hiệu lớp với thương hiệu cách làm.

abstract class Animal /* Knhì báo thủ tục thuần ảo bắt buộc ko đề xuất tư tưởng ngôn từ mang đến cách thức */ public abstract void Speak(); Khi chạy lịch trình đông đảo sản phẩm công nghệ vẫn ra đúng suôn sẻ.

Lưu ý:

Khi thừa kế 1 lớp trừu tượng các bạn sẽ phải override toàn bộ những cách tiến hành thuần ảo nhằm bảo đảm tính vừa lòng lệ mang lại công tác.

Kết luận

Nội dung bài xích này giúp các bạn chũm được:

Khái niệm tính đa hình.Từ khoá virtual cùng từ khoá override.Lớp trừu tượng và phương thức thuần ảo.

Bài sau bọn họ sẽ tò mò về INTERFACE TRONG LẬPhường TRÌNH HƯỚNG ĐỐI TƯỢNG.

Cảm ơn chúng ta vẫn quan sát và theo dõi bài viết. Hãy vướng lại phản hồi hoặc góp ý của bản thân mình để trở nên tân tiến nội dung bài viết xuất sắc hơn. Đừng quên “Luyện tập – Thử thách – Không xấu hổ khó”.

Xem thêm: Nghĩa Của Từ Subscriber Là Gì, Cã¡Ch Tä‚Ng Sub Kãªnh Youtube Nhanh NhấT

Thảo luận

Nếu chúng ta gồm bất kỳ trở ngại tốt vướng mắc gì về khóa huấn luyện, chớ ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc vào mục HỎI & ĐÁPhường trên thư viện hoidapthutuchaiquan.vn.com để nhận thấy sự cung ứng từ cộng đồng.