وراثت (Inheritance)

ارث‌بری در جاوا: extends، super، override و بازاستفاده کد.

وراثت چیست؟

کلاسی (فرزند) از کلاس دیگر (والد) فیلدها و متدها را به ارث می‌برد — بازاستفاده کد بدون تکرار:

// کلاس والد
public class Animal {
    String name;

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

    void sleep() {
        System.out.println(name + " می‌خوابد");
    }
}

// کلاس فرزند با extends
public class Dog extends Animal {
    void bark() {
        System.out.println(name + " واق واق می‌کند!");
    }
}

// Dog هم eat و sleep دارد هم bark!
Dog d = new Dog();
d.name = "رکس";
d.eat();    ← از والد
d.bark();   ← خودش

extends — کلیدواژه وراثت

class فرزند extends والد {
    // فیلدها و متدهای جدید
}

Method Overriding — بازنویسی

فرزند می‌تواند متد والد را بازنویسی کند:

public class Animal {
    void makeSound() {
        System.out.println("صدای حیوان");
    }
}

public class Cat extends Animal {
    @Override   ← نشانگر بازنویسی (اختیاری اما توصیه‌شده)
    void makeSound() {
        System.out.println("میو!");
    }
}

Animal a = new Cat();
a.makeSound();   ← میو! (نسخه فرزند اجرا می‌شود)

super — دسترسی به والد

public class Dog extends Animal {
    @Override
    void makeSound() {
        super.makeSound();   ← اول متد والد
        System.out.println("واق واق!");   ← بعد خودش
    }
}

super در سازنده

public class Animal {
    String name;
    Animal(String name) {
        this.name = name;
    }
}

public class Dog extends Animal {
    Dog(String name) {
        super(name);   ← فراخوانی سازنده والد
    }
}

سلسله‌مراتب وراثت

Animal
├── Dog
├── Cat
└── Bird
    └── Penguin (پرنده ولی نمی‌تواند بخواند — override!)
جاوا فقط وراثت تک‌والدی دارد — هر کلاس فقط یک extends! برای چندمنبع از interface استفاده کنید.

مزایای وراثت

این مبحث بخشی از دوره آموزش کامل جاوا است.

ابزارهای مرتبط