چند ریختی

از ویکی‌کد
(تغییرمسیر از چند ریختی در جاوا)
پرش به ناوبری پرش به جستجو
Main Page Tutorial
Java-menu.jpeg
خانه
متدها در جاوا
کلاس‌ها در جاوا
۱برنامه‌نویسی شیءگرایی
۲کلاس‌ها و اشیاء
۳خاصیت‌های کلاس
۴متدهای کلاس
۵سازنده‌ها
۶Modifier ها
۷کپسوله‌سازی
۸پکیج‌ها
۹ارث بری
۱۰چند ریختی
۱۱کلاس‌های داخلی
۱۲مفهوم انتزاعی
۱۳رابط‌ها
۱۴Enum ها
۱۵دریافت اطلاعات از کاربر
۱۶تاریخ و زمان
۱۷ArrayList
۱۸HashMap
۱۹کلاس‌های Wrapper
۲۰خطاهای جاوا
فایل‌ها در جاوا
مرجع جاوا
مثال‌های جاوا

پلی مرفیسم (به انگلیسی: Polymorphism) به معنای «چند ریختی» است، و زمانی رخ می‌دهد که ما چندین کلاس داریم که از طریق ارث بری مربوط به یکدیگرند. [۱]

همان‌طور که ما در فصل گذشته بیان کردیم; ارث بری به ما اجازه ارث بری خاصیت‌ها و متدها را از کلاس دیگر می‌دهد. چند ریختی از آن متدها برای انجام کارهای گوناگون استفاده می‌کند. این امر به ما این امکان را می‌دهد که یک کار را به روش‌های مختلف انجام دهیم.

برای مثال، به کلاس پدری به نامAnimalفکر کنید که یک متد به نامanimalSound()دارد. کلاس‌های فرزند، کلاس Animal می‌توانند کلاس‌های خوک، گربه، سگ، پرنده باشند، این کلاس‌ها هریک شیوه متفاوتی را برای پیاده‌سازی صدای حیوان (همانند صدای خوک، صدای میوی گربه) دارند:

مثال

 1 class Animal {
 2   public void animalSound() {
 3     System.out.println("The animal makes a sound");
 4   }
 5 }
 6 
 7 class Pig extends Animal {
 8   public void animalSound() {
 9     System.out.println("The pig says: wee wee");
10   }
11 }
12 
13 class Dog extends Animal {
14   public void animalSound() {
15     System.out.println("The dog says: bow wow");
16   }
17 }
به یاد داشته باشید که مطابق آنچه در فصل ارث بری گفته شد، ما از کلمه کلیدی extends برای ارث بری کردن از یک کلاس استفاده می‌کنیم.

حال ما می‌توانیم اشیاء Pig و Dog را بسازیم و متد animalSound() را روی هر دوی آنها فراخوانی کنیم:

مثال

 1 class Animal {
 2   public void animalSound() {
 3     System.out.println("The animal makes a sound");
 4   }
 5 }
 6 
 7 class Pig extends Animal {
 8   public void animalSound() {
 9     System.out.println("The pig says: wee wee");
10   }
11 }
12 
13 class Dog extends Animal {
14   public void animalSound() {
15     System.out.println("The dog says: bow wow");
16   }
17 }
18 
19 class MyMainClass {
20   public static void main(String[] args) {
21     Animal myAnimal = new Animal();  // Create a Animal object
22     Animal myPig = new Pig();  // Create a Pig object
23     Animal myDog = new Dog();  // Create a Dog object
24     myAnimal.animalSound();
25     myPig.animalSound();
26     myDog.animalSound();
27   }
28 }


مشاهدهٔ نتیجه

چرا و چه زمانی می‌بایست از «ارث بری» و «چند ریختی» استفاده کنیم؟

این کار برای بالابردن میزان استفاده دوباره از کد مؤثر است، این کار موجب می‌شود در هنگام ایجاد یک کلاس جدید از متدها و خاصیت‌های کلاس موجود مجدد استفاده شود.


منابع آموزشی