درس 17 از 33
در حال پیشرفت

پلی‌مورفیسم (Polymorphism)

چندریختی یعنی این که یک متد می‌تونه در کلاس‌های مختلف Subclasses، رفتارهای متفاوتی از Superclass داشته باشه ، بدون اینکه نیاز باشه کد جدیدی بنویسیم. برای این کار، از  Override کردن متدها استفاده می‌کنیم.

بیاید با یک مثال ساده شروع کنیم تا مفهوم چندریختی رو بهتر درک کنیم. فرض کن در مثال قبلی حیوانات، سگ متدی که از والد خودش یعنی کلاس Animal به ارث برده را به شکل دیگری اجرا کنه مثلا در متد eat  به جای پرینت جمله ” غذا خوردن ” جمله ” آب نوشیدن ” را میخواد پرینت کنه.

برای اینکار باید:

				
					public class Dog extends Animal {

    @Override
    void eat() {
        System.out.println("آب نوشیدن");
    }
}
				
			

در این حالت اگر در متد اصلی متد eat مربوط به object ساخته شده از کلاس Dog را فراخونی کنیم بجای عبارت ” غذا خوردن” عبارت ” آب نوشیدن ” را نشان میدهد.

				
					 public static void main(String[] args) {  
        Dog dog = new Dog();
        dog.eat(); // خروجی: آب نوشیدن
        
        }