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

سلام، توسعه دهندگان همکار! 👋 در سفر یادگیری جاوا، آخرین بار کاوش کردیم کپسولاسیون (اینجا را بررسی کنید: درک کپسولاسیون در جاوا).
امروز، بیایید به آن شیرجه بزنیم ارث در جاوا، و من قول می دهم آن را تا حد امکان ساده کنم. به ارث مانند یک شجره نامه فکر کنید – جایی که کودکان ویژگی هایی را از والدین خود به ارث می برند. خوب، در جاوا، تقریباً همین طور است! بیایید آن را به روشی آسان و قابل درک تجزیه کنیم.
ارث چیست؟ 🤔
تصور کنید در حال ساخت یک بازی ویدیویی هستید. شما شخصیت های مختلفی دارید: جنگجویان، جادوگران و کمانداران. همه آنها می توانند راه بروند، بپرند و وسایل حمل کنند. به جای نوشتن این ویژگی های مشترک بارها و بارها، می توانیم یک پایه ایجاد کنیم 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!");
}
}
چرا این باحاله؟ 🌟
- هر دو
Warrior
وMage
به طور خودکار تمام ویژگی هایPlayer
- آنها هنوز هم می توانند کارهای خاص خود را انجام دهند (مانند
swordAttack
وcastSpell
) - ما کد کمتری می نویسیم و چیزها را مرتب نگه می داریم
بیایید از کلاس های خود استفاده کنیم!
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");
}
}
نکات پایانی 💡
- یک کلاس فقط می تواند یک کلاس را در جاوا گسترش دهد (تک ارثی)
- استفاده کنید
extends
کلمه کلیدی برای به ارث بردن - استفاده کنید
@Override
هنگام تغییر رفتار والدین - به آنچه باید باشد فکر کنید
public
،protected
، یاprivate
بیایید با هم یاد بگیریم! 🤝
من دوست دارم در مورد تجربیات شما در مورد ارث بشنوم! آیا از آن در پروژه های جالب استفاده کرده اید؟ آیا منابع یا آموزش مفیدی می شناسید؟ لطفا در نظرات زیر به اشتراک بگذارید!
همچنین، اگر علاقه مند به یادگیری بیشتر هستید، در اینجا چند موضوع وجود دارد که ممکن است بخواهید بررسی کنید:
- کلاس های انتزاعی
- رابط ها
- وراثت چندگانه در جاوا (از طریق رابط)
- این
super
کلمه کلیدی
به یاد داشته باشید، بهترین راه برای یادگیری، انجام دادن است. سعی کنید کلاس های خود را ایجاد کنید و با وراثت آزمایش کنید!
این فقط راه من برای درک وراثت است – من دوست دارم افکار شما را بشنوم و از تجربیات شما بیاموزم! هر گونه منبع مفید یا توضیحات جایگزین را در نظرات به اشتراک بگذارید. 😊