برنامه نویسی

درک وراثت جاوا: راهنمای دوستانه 🌳

سلام، توسعه دهندگان همکار! 👋 در سفر یادگیری جاوا، آخرین بار کاوش کردیم کپسولاسیون (اینجا را بررسی کنید: درک کپسولاسیون در جاوا).

امروز، بیایید به آن شیرجه بزنیم ارث در جاوا، و من قول می دهم آن را تا حد امکان ساده کنم. به ارث مانند یک شجره نامه فکر کنید – جایی که کودکان ویژگی هایی را از والدین خود به ارث می برند. خوب، در جاوا، تقریباً همین طور است! بیایید آن را به روشی آسان و قابل درک تجزیه کنیم.

ارث چیست؟ 🤔

تصور کنید در حال ساخت یک بازی ویدیویی هستید. شما شخصیت های مختلفی دارید: جنگجویان، جادوگران و کمانداران. همه آنها می توانند راه بروند، بپرند و وسایل حمل کنند. به جای نوشتن این ویژگی های مشترک بارها و بارها، می توانیم یک پایه ایجاد کنیم Player کلاس و اجازه دهید کلاس های دیگر از آن ارث ببرند.

بیایید این را در عمل ببینیم:

// This is our parent/base class
public class Player {
    String name;
    int health = 100;

    public void walk() {
        System.out.println(name + " is walking");
    }

    public void jump() {
        System.out.println(name + " jumped!");
    }
}

// Warrior inherits from Player using 'extends'
public class Warrior extends Player {
    // Warriors have a special sword attack
    public void swordAttack() {
        System.out.println(name + " swings their sword!");
    }
}

// Mage also inherits from Player
public class Mage extends Player {
    // Mages can cast spells
    public void castSpell() {
        System.out.println(name + " casts a magical spell!");
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چرا این باحاله؟ 🌟

  1. هر دو Warrior و Mage به طور خودکار تمام ویژگی های Player
  2. آنها هنوز هم می توانند کارهای خاص خود را انجام دهند (مانند swordAttack و castSpell)
  3. ما کد کمتری می نویسیم و چیزها را مرتب نگه می داریم

بیایید از کلاس های خود استفاده کنیم!

public class GameDemo {
    public static void main(String[] args) {
        Warrior arthur = new Warrior();
        arthur.name = "Arthur";

        Mage merlin = new Mage();
        merlin.name = "Merlin";

        // Both can walk and jump
        arthur.walk();  // Output: Arthur is walking
        merlin.jump(); // Output: Merlin jumped!

        // Special abilities
        arthur.swordAttack(); // Output: Arthur swings their sword!
        merlin.castSpell();   // Output: Merlin casts a magical spell!
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

جالب‌تر کردن چیزها: لغو! 🔄

گاهی اوقات می خواهیم رفتار کلاس کودک را تغییر دهیم. ما می توانیم این کار را با استفاده از @Override:

public class Mage extends Player {
    // Mages jump differently - they float!
    @Override
    public void jump() {
        System.out.println(name + " floats magically in the air!");
    }

    public void castSpell() {
        System.out.println(name + " casts a magical spell!");
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

محافظت شده در مقابل خصوصی در مقابل عمومی 🔒

  • public: همه می توانند از آن استفاده کنند
  • protected: فقط خود کلاس و بچه هایش می توانند از آن استفاده کنند
  • private: فقط خود کلاس می تواند از آن استفاده کند
public class Player {
    public String name;        // Anyone can access
    protected int health;      // Only Player and its children
    private int secretPower;   // Only Player can access
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مثال دنیای واقعی: پادشاهی حیوانات 🐾

بیایید مثال دیگری در مورد حیوانات ببینیم:

public class Animal {
    protected String name;

    public void eat() {
        System.out.println(name + " is eating");
    }

    public void sleep() {
        System.out.println(name + " is sleeping");
    }
}

public class Dog extends Animal {
    public void bark() {
        System.out.println(name + " says: Woof!");
    }
}

public class Cat extends Animal {
    public void meow() {
        System.out.println(name + " says: Meow!");
    }

    // Cats sleep differently!
    @Override
    public void sleep() {
        System.out.println(name + " is taking a cat nap");
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نکات پایانی 💡

  1. یک کلاس فقط می تواند یک کلاس را در جاوا گسترش دهد (تک ارثی)
  2. استفاده کنید extends کلمه کلیدی برای به ارث بردن
  3. استفاده کنید @Override هنگام تغییر رفتار والدین
  4. به آنچه باید باشد فکر کنید public، protected، یا private

بیایید با هم یاد بگیریم! 🤝

من دوست دارم در مورد تجربیات شما در مورد ارث بشنوم! آیا از آن در پروژه های جالب استفاده کرده اید؟ آیا منابع یا آموزش مفیدی می شناسید؟ لطفا در نظرات زیر به اشتراک بگذارید!

همچنین، اگر علاقه مند به یادگیری بیشتر هستید، در اینجا چند موضوع وجود دارد که ممکن است بخواهید بررسی کنید:

  • کلاس های انتزاعی
  • رابط ها
  • وراثت چندگانه در جاوا (از طریق رابط)
  • این super کلمه کلیدی

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

این فقط راه من برای درک وراثت است – من دوست دارم افکار شما را بشنوم و از تجربیات شما بیاموزم! هر گونه منبع مفید یا توضیحات جایگزین را در نظرات به اشتراک بگذارید. 😊

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا