مفاهیم پایه در وراثت یا Inheritance
دانستن مفهوم وراثت به شما کمک می کند، چه در جاوا چه در سایر زبان های برنامه نویسی که از وراثت پشتیبانی می کنند کار راحت تری در یادگیری و یا پیاده سازی برنامه هایتان داشته باشید. یعنی زمانی که شما مفاهیم وراثت و یا چند ریختگی و به طور کل شی گرایی را بلد باشید، در زمان یاد گیری آن در زبان برنامه نویسی جدید شما فقط نیاز به یادگیری سینتکس آن زبان در که به چه شکل شی گرایی را پیاده سازی کرده است را دارید. بنابراین قبل از هر تمرین برنامه نویسی در این بخش به یادگیری دقیق مفاهیم پایه ای بپپردازید.
به طور کلی وراثت مار ار قادر می سازد تا کلاس های جدید ایحاد کرده و با استفاده از کلاس های موجود، ویژگی ها و خصوصیات آن ها را به خود اضافه کرده و علاوه بر آن ویژگی ها و خصوصیات منحصر به فرد دیگری به آن بیافزاید که در کلاس اصلی موجود نیست. وراثت امکان استفاده مجدد از کلاس های موجود را فراهم می کند.
قبل از توضیح فنی به مثالی از دنیای واقعی می پردازیم. در زندگی روزمره شاهد ارث بری ظاهری، فیزیکی، اخلاقی فرزندان یک خانواده از پدر و مادر هستیم. یعنی علاوه بر اینکه پسر خانواده دارای صورتی شبیه به پدر است، اما رنگ چشم او آبی است و با رنگ چشم پدر که سیاه است متفاوت می باشد. با کمی دقت به این نتیجه می رسیم که فرزند علاوه بر ارث بری یک سری از خصوصیات از پدر، دارای خصوصیات منحصر به فرد از خودش می باشد. با همین مثال ساده می توانیم کار یادگیری را آغاز کنیم.
تمام چیز هایی که نیاز دارید دانستن مفهوم کلاس، سازنده ها و نحوه کار کردن آن ها است. در زیر لینک های کلاس ها در جاوا و سازنده ها در جاوا از سری آموزش های جاوا را می توانید مشاهده کنید
سازنده ها در جاوا لینک
کلاس ها در جاوا لینک
کلاس پدر، والد، پایه، مشتق، فرعی، زیر کلاس چیست
در مثال از دنیای واقعی برای ارث بری بحث پدر و فرزند را مطرح کردیم. حالا با در نظر گرفتن پدر و فرزند به عنوان کلاس، پدر کلاس پایه، کلاس والد یا کلاس مافوق گفته می شود که در انگلیسی به آن base class یا super class نیز می گویند. فرزند را کلاس مشتق، کلاس فرعی یا زیر کلاس که در انگلیسی به آن derived class یا sub class گفته می شود.
بنابراین هرگاه گفتیم کلاس پایه، منظور کلاسی است که ارث بری از آن انجام می گیرد و هرگاه گفتیم کلاس فرزند، در واقع کلاسی را می گوییم که میخواهد خصوصیات و ویژگی های یک کلاس پایه را به ارث ببرد.
فرض کنید یک کلاس پایه با نام SuperClass داریم. هر تعداد از کلاس ها می توانند از این کلاس ارث بری انجام دهند. در واقع هر تعداد از کلاس ها می توانند از SuperClass برای ارث بری ویژگی ها و خصوصیات آن، ارث بری کنند. هر کلاس پایه می تواند خود از کلاس پایه دیگری ارث بری کند. یعنی SuperClass می تواند از کلاس دیگری به نام SuperClass2 ارث بری داشته باشد. بنابراین در ارث بری، می توانیم سلسله مراتبی از کلاس ها داشته باشیم. شکل زیر بیانگر این موضوع است
در شکل بالا سلسله مراتبی از ارث بری برای کلاس ها را مشاهده می کنید. در بالاترین سطح Class1 را داریم که ویژگی و خصوصیاتی را از کسی به ارث نمی برد.
در سطح میانی Class2 را داریم که از Class1 ارث بری میکند. یعنی علاوه بر ویژگی ها و خصوصات خودش، ویژگی ها و خصوصیات Class1 را نیز به ارث خواهد برد.
در سطح سوم سه کلاس با نام های Class3، Class4 و Class5 را داریم که هر سه این کلاس ها علاوه بر خصوصیات و ویژگی های خودش، ویژگی ها و خصوصیات Class2 و Class1 را به ارث می برند.
هر کلاس پایه می تواند هر تعدادی کلاس مشتق داشته باشد و هرکدام از آن ها نیز می تواند کلاس پایه هر تعدادی از زیر کلاس های خود باشند
در بالای سلسله مراتب کلاس ها در جاوا کلاس Object وجود دارد. یعنی زمانی که یک کلاس ایجاد می کنید آن کلاس تمامی خصوصیات و ویژگی های کلاس Object را به ارث می برد.
وراثت چند گانه یا Multiple Inheritance
در وراثت چند گانه یک کلاس می تواند از چند کلاس پایه ارث بری کند. نحوه وراثت چندگانه را در شکل زیر می بینید. جاوا از وراثت چندگانه پشتیبانی نمی کند و دلیل آن هم کاهش احتمال به وجود آمدن خطا در برنامه است. زیرا جاوا با هدف ایجاد برنامه های پیچیده و سازمانی بر روی وب به وجود آمده است و در صورت بی دقتی وراثت چندگانه می تواند مشکل ساز شود. زبان برنامه نویسی مانند C++ از وراثت چندگانه پشتیبانی می کند.
در جاوا یک کلاس نمی تواند از دو کلاس پایه ارث بری کند. اما می تواند هر تعداد واسط یا Interface را پیاده سازی کند. این ویژگی می تواند نیاز برنامه نویس را در زمانی که به وراثت چندگانه به وجود می آید را برطرف سازد.
خصوصیات و ویژگی ها
خصوصیات و ویژگی های یک کلاس چیست؟ در واقع همان متد ها و متغیر های کلاس هستند.
در ادامه آموزش ها به بررسی شکل کلی وراثت در برنامه نویسی جاوا می پردازیم.
منبع: it3du.ir