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

وراثت (Inheritance)

تو این بخش، می‌خوایم مفهوم وراثت (Inheritance) رو دقیق‌تر توضیح بدیم و ببینیم چطور می‌شه از کلاس‌ها استفاده کرد تا کدهای تکراری رو کاهش بدیم. با یه مثال ساده، این موضوع رو بهتر درک خواهیم کرد.

چطور وراثت کار می‌کنه؟

  1. کلاس‌های فرعی (Subclasses):
    یه کلاس فرعی می‌تونه ویژگی‌ها و متدهای کلاس اصلی (Superclass) رو به ارث ببره. این باعث می‌شه که شما بتونید از کدهای نوشته شده استفاده مجدد کنید و نیاز به نوشتن دوباره کدها نباشه.

  2. نحوه‌ی استفاده از وراثت:
    وقتی یه کلاس از یه کلاس دیگه ارث می‌بره، به‌طور خودکار ویژگی‌ها و متدهای کلاس اصلی رو به ارث می‌بره. کلاس فرعی می‌تونه این ویژگی‌ها و متدها رو تغییر بده یا متدهای جدید اضافه کنه.

مثال وراثت با کلاس Animal

فرض کنید یه کلاس Animal داریم که ویژگی‌های مشترک حیوانات رو تعریف می‌کنه. بعد برای هر شکل، یک کلاس فرعی می‌سازیم که ویژگی‌های خاص خودش رو داشته باشه.

کلاس اصلی (Superclass) – Animal:

				
					class Animal {
    void breathe() {
        System.out.println("نفس می‌کشه!");
    }

    void eat() {
        System.out.println("غذا می‌خوره!");
    }
}

				
			

کلاس‌های فرعی (Subclasses): Dog، Cat و Cow

				
					class Cat {
    void sound() {
        System.out.println("mew mew");
    }
}

				
			
				
					class Dog {
    void sound() {
        System.out.println("hup hup");
    }
}

				
			
				
					class Cow {
    void sound() {
        System.out.println("maaa maaa");
    }
}

				
			

کلاس Test برای اجرای کد (مثال استفاده از وراثت):

				
					public class TestAnimals {  
    public static void main(String[] args) {  
        Dog dog = new Dog();
        dog.sound();
        dog.breath();
        dog.eat();
        
        Cat cat = new Cat();
        cat.sound();
        cat.breath();
        cat.eat();
        
        Cow cow = new Cow();
        cow.sound();
        cow.breath();
        cow.eat();
    }  
}

				
			

چرا وراثت مفیده؟

  • استفاده مجدد از کد:
    خب، حالا سه کلاس داریم که تقریباً خیلی شبیه به هم هستند. هر کدومشون ویژگی‌های مشابهی مثل نفس کشیدن و غذا خوردن رو دارند. مشکل اینجاست که وقتی بخواهیم تعداد زیادی حیوان درست کنیم، باید این کدها رو دوباره تکرار کنیم و این برای کدنویسی اصلاً بهینه نیست. اینجاست که ارث‌بری به کمک میاد. با استفاده از ارث‌بری می‌تونیم یه کلاس عمومی به اسم Animal درست کنیم که ویژگی‌های مشترک مثل نفس کشیدن و غذا خوردن رو توش داشته باشه. بعد کلاس‌های مختلف حیوانات فقط ویژگی‌های خاص خودشون رو اضافه می‌کنن.

  • سازگاری با تغییرات:
    اگر رفتارهای مشترک در کلاس اصلی تغییر کنه، این تغییرات به طور خودکار توی کلاس‌های فرعی اعمال می‌شه.

  • کاهش پیچیدگی:
    به جای نوشتن کدهای تکراری، فقط ویژگی‌های عمومی رو توی کلاس اصلی تعریف می‌کنید و بقیه ویژگی‌ها رو در کلاس‌های فرعی می‌نویسید.

نحوه استفاده از ارث‌بری در جاوا

  • برای ارث‌بری توی جاوا خیلی ساده فقط باید بنویسیم:

				
					class Dog extends Animal
				
			

این یعنی Dog همه متدها و ویژگی‌های کلاس Animal رو به ارث می‌بره.