دوره مقدماتی جاوا
نصب ابزار
آشنایی با پکیج منیجر Chocolatey-
ابزار مدیریت پروژه Maven
-
جاوا چطور کار میکنه؟
-
دانلود و نصب JDK 8
-
معرفی محیط های توسعه جاوا
-
نصب IntelliJ IDEA Community
-
ساخت و اجرای اولین پروژه جاوا
- مفاهیم و اصول برنامهنویسی شیء گراساختار کد در جاوا
-
گفتگوی JVM و compiler، کی مهمتره؟!
-
نوشتن برنامه به کمک تست (TDD)
-
سفری به دنیای شیء گرایی
-
تفاوت بین کلاس و شیء
-
روش Given-When-Then برای نوشتن تست
-
بازی حدس اعداد (Guessing Game)
-
مدیریت حافظه در جاوا: Garbage Collection
-
وراثت (Inheritance)
-
پلیمورفیسم (Polymorphism)
-
متغیرهای خود را بشناسید
-
How Objects Behave
-
Extra-Strength Methods
-
Using the Java Library
-
Better Living in Objectville
-
Serious Polymorphism
-
Life and Death of an Object
-
Numbers Matter
-
Data Structures
-
Lambdas and Streams: What, Not How
-
Risky Behavior
-
A Very Graphic Story
-
Work on Your Swing
-
Saving Objects (and Text)
-
Make a Connection
-
Dealing with Concurrency Issues
تو این بخش، میخوایم مفهوم وراثت (Inheritance) رو دقیقتر توضیح بدیم و ببینیم چطور میشه از کلاسها استفاده کرد تا کدهای تکراری رو کاهش بدیم. با یه مثال ساده، این موضوع رو بهتر درک خواهیم کرد.
چطور وراثت کار میکنه؟
کلاسهای فرعی (Subclasses):
یه کلاس فرعی میتونه ویژگیها و متدهای کلاس اصلی (Superclass) رو به ارث ببره. این باعث میشه که شما بتونید از کدهای نوشته شده استفاده مجدد کنید و نیاز به نوشتن دوباره کدها نباشه.نحوهی استفاده از وراثت:
وقتی یه کلاس از یه کلاس دیگه ارث میبره، بهطور خودکار ویژگیها و متدهای کلاس اصلی رو به ارث میبره. کلاس فرعی میتونه این ویژگیها و متدها رو تغییر بده یا متدهای جدید اضافه کنه.
مثال وراثت با کلاس 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 رو به ارث میبره.