تعداد بازدید: 2870

انواع ارث بری کلاس ها در جاوا (inheritance)

در این درس قصد داریم تا در مورد ارث بری و انواع ارث بری در جاوا و همچنین نحوه ساخت instance از روی کلاس ها صحبت کنیم. خوب ما انواع مختلفی از متغیر ها رو بررسی کردیم دیدیم که انواع مختلفی از متغیر ها نظیر float , int , double , … وجود داره . ما می تونیم متغیری از نوع یک کلاس خاص هم تعریف کنیم(یعنی نوع داده متغیر کلاس باشه). به مثال زیر توجه کنید:

public class A {

    int data = 10;

    public static void main(String args[]){
        //defind bClass variable
        B bClass = new B();
        //call displayData method
        bClass.displayData();
    }

}

می بینید که ما کلاسی در جایی تعریف کردیم که نام اون کلاس B بوده . حالا نوع داده B هم در پروژه ما اضافه میشه که یعنی ما یک متغیر از نوع B می تونیم بسازیم که در اون هم باید مقداری قرار بگیره که از نوع کلاس B باشه که همون instance از کلاس B هست.

inhertance یا ارث بری در جاوا

اگر ویژگی کلاس جدیدی که می خواهیم تعریف کنیم در کلاسی که از قبل تعریف کرده باشیم وجود داشته باشه به جای تعریف یک کلاس جدید می تونیم از کلاس قبل استفاده کنیم. به این مبحث ارث بری یا inheritance در جاوا می گیم.در این مفهوم به کلاسی که قبلا وجود داشته باشه کلاس پدر و یا super class می گیم و به کلاس هایی که مشتق شده اند کلاس فرزند یا subclass میگیم.

برای ساخت یک کلاس از روی کلاس دیگر از کلمه کلیدی extends استفاده می کنیم.

انواع ارث بری در جاوا

ما در جاوا سه نوع ارث بری داریم:

  • single inheritance
  • multilevel inheritance
  • hierarchical inheritance

ارث بری یکتا (Single inheritance)

نوع ساده ارث بری که تشکیل شده از یک پدر و یک فرزند که در مثال زیر کلاس A پدر و B فرزند می باشد.(تنها شامل دو کلاس میشه)

کلاس A :

public class A {

    int data = 10;

    public static void main(String args[]){
        //defind bClass variable
        B bClass = new B();
        //call displayData method
        bClass.displayData();
    }

}

کلاس B :

public class B extends A{

    public void displayData(){
         System.out.println("data is: " + data);
    }
}

همون طور که می بینید کلاس B از کلاس A ارث برده شده و متغیر data که مشاهده می فرمایید در کلاس A وجود داره.

نکته : ابتدا data در کلاس اصلی یعنی کلاس B به دنبالش گشته میشه و بعد اگر موجود نبود به کلاس A میره تا data رو پیدا کنه. پس یعنی در کلاس فرزند میشه مقادیر رو دوباره تعریف کرد.

ارث بری چند سطحی (multilevele inheritance)

نوع ساده یا ارث بری یکتا رو میشه ارث بری یک سطحی دونست . خوب اگر تا چند سطح این ارث بری رو ادامه بدیم میشه ارث بری چند سطحی یا multilevel inheritance . به طور مثال ما یک کلاس داریم با نام A . کلاس دیگری داریم با نام B که از کلاس A ارث برده شده. و کلاس دیگری داریم با نام C که از کلاس B ارث برده شده .

کلاس A :

public class A {
    int data = 10;
}

کلاس B :

public class B extends A {

}

کلاس C :

public class C extends B {
    public void dispalyData(){
        System.out.println("data is: " + data);
    }
    public static void main(String args[]){
        C obj = new C();
        obj.dispalyData();
    }
}

ما در main کلاس C یک متغیر با نام obj از نوع کلاس C ساختیم . در اون یک شی از کلاس C قرار دادیم . از طریق اون متد displayData رو فراخوانی کردیم که در این متد باید متغیر data چاپ بشه.

ابتدا در کلاس جاری به دنبال این متغیر گشته میشه اگر وجود نداشت به کلاس پدر یعنی B میره و اگر وجود نداشت به کلاس پدربزرگ یعنی A میره و اون رو چاپ میکنه.

ارث بری سلسله مراتبی (hierarchical inheritance)

این نوع ارث بریم خاصیت سلسله مراتبی رو میشه مشاهده کرد. یعنی از یک کلاس چندین کلاس ارث برده بشه. مثلا از کلاس A کلاس B و کلاس C ارث برده بشه.

کلاس A :

public class A {
    int data = 10;
}

کلاس B :

public class B extends A {
}

کلاس C :

public class C extends A {
    public static void main(String args[]){
        A objA = new A();
        B objB = new B();
        C objC = new C();

        System.out.println("data in A class is: " + objA.data);
        System.out.println("data in B class is: " + objB.data);
        System.out.println("data in C class is: " + objC.data);

    }
}

خروجی به شکل زیر خواهد بود:

data in A class is: 10
data in B class is: 10
data in C class is: 10

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

2 دیدگاه برای انواع ارث بری کلاس ها در جاوا (inheritance)

  1. با سلام و احترام
    خواستم دوباره بخاطر آموزش های فوق العاده و سایت حرفه ای از شما و گروهتون تشکر کنم
    و همچنین درخواست کنم لطفا ادامه آموزش ها رو در صورت امکان هر چه سریعتر منتشر کنید
    من به شخصه طرفدار پرو پا قرص سایت شما هستم و سایت شما رو به چند تا از دوستان معرفی کرده ام
    واقعا حیفه بخاطر تاخیر در انتشار مطالب مخاطبین خودتون رو از دست بدید .
    عذر خواهی بابت طولانی شدن مطلب و تشکر فراوان
    بیصبرانه منتظر آموزش های بعدی هستیم

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

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