menusearch
javapro.ir

♨️ جلسه بیستم - آموزش وراثت در زبان برنامه نویسی جاوا

جستجو
شنبه ۶ مرداد ۱۴۰۳ | ۱۲:۵:۴۱
۱۳۹۵/۱۰/۳۰ پنج شنبه
(13)
(0)
♨️ جلسه بیستم - آموزش وراثت در زبان برنامه نویسی جاوا
♨️ جلسه بیستم - آموزش وراثت در زبان برنامه نویسی جاوا

فهرست جلسات دوره مقدماتی جاوا

مقدمه اول | جاوا چیست؟

مقدمه دوم | تاریخچه جاوا

مقدمه سوم | ویژگی‌های زبان جاوا

جلسه اول | راهنمای دانلود و نصب JDK

جلسه دوم | اجرای یک برنامه جاوا در Notepad

جلسه سوم | راهنمای دانلود و نصب Eclipse

جلسه چهارم | ساخت اولین برنامه جاوا در Eclipse

جلسه پنجم | متغیر ها در جاوا

جلسه ششم | تغییر فونت محیط Eclipse

جلسه هفتم | عملگر‌های پایه ای جاوا

جلسه هشتم | دستورات شرطی

جلسه نهم | اشیا و کلاس ها

جلسه دهم | ورودی گرفتن

جلسه یازدهم | حلقه‌های کنترلی

جلسه دوازدهم | کلمه کلیدی static

جلسه سیزدهم | کلاس Math

جلسه چهاردهم | کلاس String

جلسه پانزدهم | آرایه‌های یک بعدی

جلسه شانزدهم | کنترل سطح دسرسی (Modifiers)

جلسه هفدهم | متدها در جاوا

جلسه هجدهم | کلمه کلیدی this

جلسه نوزدهم | کلاس‌های داخلی

جلسه بیستم | ارث بری در جاوا

جلسه بیست و یکم | کلمه کلیدی final

جلسه بیست و دوم | Overriding در جاوا

جلسه بیست و سوم | Polymorphism( چند ریختی)

جلسه بیست و چهارم | چندریختی را بهتر یادبگیرید

جلسه بیست و پنجم | Abstraction( انتزاع)

جلسه بیست و ششم | Encapsulation(کپسوله سازی)

جلسه بیست و هفتم | اینترفیس (Interface)

جلسه بیست و هشتم | کلاس Random

جلسه بیست و نهم | Exceptions (استثناها)

جلسه سی ام | کار با فایل در جاوا(Files and I/O)

جلسه سی و یکم | کلاس InputStreamReader

جلسه سی و دوم | کلاس OutputStreamWriter

جلسه سی و سوم | کلاس BufferedReader

جلسه سی و چهارم | کلاس BufferedWriter

جلسه سی و پنجم | Serialization در جاوا

جلسه سی و ششم | چندنخی(Multithreading)

جلسه سی و هفتم | آرایه دو بعدی در جاوا

جلسه سی و هشتم | کلاس ArrayList در جاوا

جلسه سی و نهم | Non Access Modifier در جاوا

 

دوره رایگان مقدماتی زبان جاوا

 

 

 

 

آموزش تمامی مباحث پیشرفته و کاربردی زبان برنامه نویسی جاوا[اینجا کلیک کنید]

 

 

 

 

در این جلسه ارث بریرا بررسی میکنیم:
ما از جلسه 1 تا 19 ابتدا با ابزارها و برنامه های مورد نیاز برای نوشتن یک برنامه به زبان جاوا و مباحث پایه ای جاوا آشنا شدیم،می توان گفت این مباحث پایه ای نظیر تعریف متغیرها،حلقه ها،شرط ها،متدهاو... در بین همه زبان های برنامه نویسی مشترک هستند،مهم ترین بخش که جاوا را با سایر زبان های برنامه نویسی متمایز میکند همین مبحث شی گرایی جاوا است!!! که ارث بری یا وراثت جزیی از این بخش هستش. تمام سعی خودم رو میکنم این جلسه مهم را به زبان ساده بیان کنم!خب بریم سراغ اصل مطلب!


ارث بری یا وراثت!
ارث بری در برنامه نویسی جاوا یعنی چه؟!!! ارث بری یعنی یک کلاس از خصوصیات ( متدها و متغیرهای) کلاس دیگر استفاده کند!
ارث بری در جاوا مثل دنیای واقعی هست!!!! بزارید با مثالی از دنیای واقعی این مبحث را جا بندازم:


یک فرزند از پدر خود می‌تواند مال و منالی رو چه در زمان حیات و چه بعد از مرگ به ارث ببرد!!!:
مثلا در زمان حیات پدر جعفر یک خانه + یک پراید دارد،جعفر چون فرزند پدرش هست میتونه در خانه پدر زندگی کنه و از امکانات منزل پدر استفاده کند و گهگاهی هم دزدکی پدر پراید رو از خونه خارج کنه و جیم بشه تنها جعفر به دلیل این که فرزند پدرش هست حق داره در خانه زندگی کند و حالا بره با پراید ی دور دوری هم کنه 😊😊😊 مثلا گرگعلی پسر همسایه نمی‌تونه بیاد در خانه پدر جعفر زندگی کنه چون پدر جعفر بابای گرگعلی نیست!!! نتیجه میگیریم با یک رابطه پدر و فرزندی،فرزند میتونه از امکانات پدر استفاده ببرد در جاوا هم همین طور هست!!!! یعنی یک کلاس میتونه در صورتی از ویژگی ها و رفتار های کلاس دیگر استفاده کند که اون کلاس را به ارث ببرد ،کلاسی که ویژگی ها و رفتارهای کلاس دیگر را به ارث می‌برد کلاس فرزند یا زیر کلاس و کلاسی که کلاس فرزند از خصوصیات و رفتارهای آن استفاده میکند کلاس پدر می‌گوییم.


مثال: فرض کنید دو کلاس به نام A و B داریم،در صورتی کلاس A پدر کلاس B و B فرزند کلاس A هستش که کلاس B کلاس A را به ارث ببرد!!!!خب چطور یک کلاس می‌تواند کلاس دیگر را به ارث ببرد؟!!! پاسخ در ادامه آموزش!


کلمه کلیدی extends :
با استفاده از کلمه کلیدی extends یک کلاس می‌تواند ویژگی ها و رفتار های کلاس دیگر را به ارث ببرد.یعنی یک کلاس با استفاده از این کلمه کلیدی می‌تواند خودش را فرزند کلاس دیگر جا بزند! و اون کلاس نقش پدرش را بازی کند.
نحوه به ارث بردن دو کلاس را در زیر مشاهده میکنیم:

 

package javalike ;

public class Child extends parent {

}
class Parent {
   
}

 

✔ در این کد برنامه، کلاس Child با استفاده از کلمه کلیدی extends کلاس Parent را به ارث برده است که با این کار کلاس Child فرزند کلاس Parent و کلاس Parent پدر کلاس Child شده است،به گونه ای که تمامی خصویات،ویژگیها و رفتار های کلاس Parent برای کلاس Child قابل دستیابی هستش.چیزی شبیه رابطه جعفر با پدرش 😊

 

✔ در اصطلاحات ارث بری یا وراثت به کلاس پدر ،کلاس super،کلاس بزرگ،کلاس اصلی،کلاس پایه،پدربزرگ یا هر چیزی که نشان از بزرگی داره میگن 😊 و به کلاس فرزند،کلاس sub ،زیر کلاس میگن و هر چیزی که جزیی از کل را نشان دهد.


🔵 در زیر نمونه کد دیگر که تنها اسمشون فرق میکنه مشاهده میکنید:

 

class Super {

}
class Sub extends Super {

}
 
✔ کلاس Sub کلاس Super را به ارث برده است.یعنی کلاس Sub زیر کلاس یا فرزند کلاس Super هستش و Super پدر کلاس Sub است.
 

✔ قبل از کلمه کلیدی extends، نام کلاس فرزند (کلاسی که قصد داره از متغیرها و متدهای کلاس دیگر استفاده کند) و بعد از آن نام کلاس پدر (کلاسی که قراره یک کلاس از ویژگی ها و رفتارش استفاده ببرد) قرار میگیرد.یعنی این کلمه تنها در کلاس فرزند استفاده می‌شود برای به ارث بردن کلاس پدر.

 

class A {

}
class B extends A {

}

 

✔ کلاس B فرزند کلاس A و کلاس A پدر کلاس B هستش، زیرا کلاس B کلاس A را به ارث برده است.

 

 

🔵 در زیر یک مثال ساده کاربردی ارث بری یک کلاس از کلاس دیگر را بررسی میکنیم:

 

package javalike ;
class Calculation {
  int z;
   
  public void addition(int x, int y) {
    z = x + y;
    System.out. print ln("The sum of the given numbers:"+z);
  }
   
  public void Subtraction(int x, int y) {
    z = x - y;
    System.out. print ln("The difference between the given numbers:"+z);
  }
}

public class My_Calculation extends Calculation {
  public void multiplication(int x, int y) {
    z = x * y;
    System.out. print ln("The product of the given numbers:"+z);
  }
   
  public static void main(String args[]) {
    int a = 20, b = 10;
    My_Calculation demo = new My_Calculation();
    demo.addition(a, b);
    demo.Subtraction(a, b);
    demo.multiplication(a, b);
  }
}

 

خروجی:

 

The sum of the given numbers:30
The difference between the given numbers:10
The product of the given numbers:200

 

✔ در این مثال دو کلاس به نام های Calculation و My_Calculation داریم،که کلاس My_Calculation کلاس Calculation را به ارث برده است،و طبق قانون رسما کلاس My_Calculation فرزند کلاس Calculation می‌شود و تمامی متغیرها و متدهای کلاس پدر یعنی Calculation برای کلاس فرزند یعنی My_Calculation قابل دستیابی است.

 

✔ کلاس Calculation دارای یک متغیر از نوع عدد صحیح به نام z و دو متد addition و Subtraction هستند که هر دو متد دو پارامتر به عنوان ورودی میگیرن و اولی حاصل جمع و دومی حاصل تفریق دو عدد را در خروجی چاپ میکنند.


✔ کلاس My_Calculation دارای یک متد به نام multiplication است که دو عدد صحیح از پارامتر ورودی خود میگیرد و حاصلضرب دو عدد را در خروجی چاپ میکند، و همچنین دارای متد main برای اجرای برنامه هستش،در متد main این کلاس دو متغیر محلی از نوع عدد صحیح به نام های a,b تعریف و مستقیم مقداردهی کرده ایم.بعد یک شی از کلاس My_Calculation به نام demo ایجاد کرده ایم.حال با شی demo متدهای این کلاس یعنی addition, Subtraction, multiplication را صدا زده ایم!!! اما یک نکته مهم!!!در بدنه کلاس ما متدهای addition, Subtraction پیاده سازی که نشده؟!!!چرا برنامه خطا نمیده؟!! پاسخش اینه که چون کلاس My_Calculation کلاس Calculation را به ارث برده است یعنی کلاس My_Calculation فرزند کلاس Calculation است و طبق قانون ارث بری وقتی یک کلاس کلاس دیگر را به ارث می‌برد می‌تواند از تمامی متدها و ویژگی های اون کلاس دسرسی داشته باشد بدون این که نیاز به پیاده سازی آنها در کلاس خود داشته باشد یعنی این متدها از پدر و استفاده از فرزند!مانند این است که پراید مال پدر جعفر بود اما جعفر هم ازش استفاده میکرد!!


✔ در این برنامه وقتی ما یک شی از کلاس My_Calculation میسازیم،علاوه بر این که این شی حاوی ویژگی ها و رفتار های کلاس My_Calculation هستش،یک کپی از محتویات کلاس پدر خود Calculation را نیز در بر دارد،به همین خاطر از طریق شی ساخته شده از کلاس فرزند یعنی My_Calculation می‌توان به ویژگی ها و رفتار های کلاس پدر یعنی Calculation دسرسی داشت.این مفهوم بصورت شکل در زیر آمده است:

آموزش وراثت در جاوا به زبان ساده

کلمه کلیدی super :
کلمه کلیدی super شبیه کلمه کلیدی this هستش.در زیر جاهایی که کلمه کلیدی super استفاده می‌شود آمده است:

  • این کلمه کلیدی برای فرق گذاشتن بین اعضای هم نام (متغیرها و متدها) کلاس پدر و فرزند است.اگه یادتون باشه کلمه کلیدی this نیز برای فرق گذاشتن بین متغیر محلی و نمونه کلاس بود،کلمه کلیدی super نیز درجاهایی که متغیرها یا متدهای کلاس فرزند و پدر همنام باشند برای صدا زدن متغیرها یا متدهای پدر از کلمه کلیدی super استفاده میکنیم.
  • کاربرد دیگر این کلمه کلیدی برای صدا زدن سازنده (constructor) کلاس پدر در کلاس فرزند می‌باشد.

یادآوری :
اعضای کلاس یعنی چه؟ به متغیرها و متدهای درون بدنه یک کلاس اعضای کلاس گفته می‌شود.

فرق گذاشتن بین اعضای هم نام کلاس پدر و فرزند:
هنگامی که یک کلاس،خصوصیات (متغیرها و متدها) کلاس دیگری را به ارث می‌برد، اگر اعضای کلاس پدر با اعضای کلاس فرزند همنام باشد،برای فرق گذاشتن بین ویژگی ها و رفتارهای کلاس پدر و فرزند از کلمه کلیدی super برای صدا زدن متغیرها و متدهای کلاس پدر استفاده میکنیم.

 

super.variable;
super.method();

 

✔ با کلمه کلیدی super می توان متغیرها و متد های کلاس پدر را صدا زد و با این کار بین متغیرها و متدهای همنام کلاس پدر و فرزند فرق میگذاریم که از یکدیگر قابل تشخیص شوند.

 

در مثال زیر کاربرد کلمه کلیدی super را بررسی میکنیم:

 

package javalike;
class Super_class {
  int num = 20;

  // display method of superclass
  public void display() {
    System.out. print ln("This is the display method of superclass");
  }
}

public class Sub_class extends Super_class {
  int num = 10;

  // display method of sub class
  public void display() {
    System.out. print ln("This is the display method of subclass");
  }
  public void my_method() {
    // Instantiating subclass
    Sub_class sub = new Sub_class();

    // Invoking the display() method of sub class
    sub.display();

    // Invoking the display() method of superclass
    super.display();

    // print ing the value of variable num of subclass
    System.out. print ln("value of the variable named num in sub class:"+ sub.num);

    // print ing the value of variable num of superclass
    System.out. print ln("value of the variable named num in super class:"+ super.num);
  }

  public static void main(String args[]) {
    Sub_class obj = new Sub_class();
    obj.my_method();
  }
}

 

خروجی:

 

This is the display method of subclass
This is the display method of superclass
value of the variable named num in sub class:10
value of the variable named num in super class:20
 

✔ در این برنامه دو کلاس به نام های Super_class و Sub_class داریم، کلاس Sub_class فرزند (زیر کلاس) کلاس Super_class است،زیرا کلاس Sub_class ،کلاس Super_class را به ارث برده است یعنی کلاس Super_class پدر کلاس Sub_class هستش و کلاس Sub_class به تمام ویژگی ها و رفتار های کلاس Super_class دسرسی دارد.

 

✔ کلاس Super_class دارای یک متغیر از نوع عدد صحیح به نام num ویک متد که پیامی را در خروجی چاپ میکند به نام display دارد.

 

✔ کلاس Sub_class نیز یک متغیر از نوع عدد صحیح و یک متد همنام با پدر خود و متد دیگری به نام my_method دارد!!!

 

  Sub_class sub = new Sub_class();

    sub.display();

    super.display();

 

✔ در بدنه کلاس Sub_class، درون متد my_method ما یک شی از کلاس Sub_class به نام sub ایجاد کرده ایم.در بدنه این متد ،با استفاده از شی sub، متد display درون کلاس Sub_class را صدا زده ایم و با کلمه کلیدی super متد display درون کلاس پدر Sub_class یعنی Super_class را صدا کرده ایم.در اینجا با وجود همنام بودن متد کلاس فرزند و پدر با استفاده از کلمه کلیدی super بین متد فرزند و پدر فرق گذاشته ایم با این کار متدهای همنام بین پدر و فرزند قابل تشخیص می‌شوند.

 

    System.out. print ln("value of the variable named num in sub class:"+ sub.num);

      System.out. print ln("value of the variable named num in super class:"+ super.num);

 

✔ در اینجا نیز متغیر از نوع عدد صحیح در کلاس فرزند (Sub_class) و کلاس پدر (Super_class) همنام است پس برای تمایز قائل شدن و قابل تشخیص بودن این متغیر که آیا مربوط به پدر (Super_class) هست یا فرزند(Sub_class) از کلمه کلیدی super برای صدا زدن متغیر کلاس پدر (Super_class) استفاده کرده ایم.برای صدا زدن متغیر num مربوط به کلاس فرزند(Sub_class) از شی ایجاد شده از کلاس فرزندمون(Sub_class) یعنی sub استفاده کرده ایم.در خروجی مقدار این متغیر برای کلاس پدر (Super_class) و فرزند(Sub_class) متفاوت است یعنی برای کلاس فرزند(Sub_class) مقدار 10 و برای کلاس پدر (Super_class)این متغیر مقدارش 20 است.پی در اینجا با وجود همنام بودن متغیر کلاس پدر (Super_class) و فرزند(Sub_class) با کلمه کلیدی super بین ویژگی همنام پدر (Super_class) و فرزند(Sub_class) تمایز ایجاد کردیم.

 

  public static void main(String args[]) {
    Sub_class obj = new Sub_class();
    obj.my_method();
  }

 

✔ در پایان در متد main کلاس Sub_class یک شی از کلاس فرزند (Sub_class) ایجاد کرده و توسط شی متد my_method را صدا زده ایم با این کار تمام دستورات درون بدنه این متد اجرا می‌شود.

 

.....ادامه این جلسه آموزشی را می‌توانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.


این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)

آموزش آسان و ساده زبان برنامه نویسی جاوا

لینک دانلود

 

 


نشر این مطلب با ذکر منبع (لینک سایت) بلامانع است.
برای با خبر شدن از جدیدترین مطالب آموزشی جاوا عضو کانال تلگرام ما شوید.
 
instagram
نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

3 نظر
سحر عرب
یکشنبه بیست و چهارم آذر ۹۸
پاسخ
(1)
()
سحر عرب
سلام آموزش واقعا عاليه خيلي معرفيتون کردم ب دوستان ... از قسمت 18 به بعدشو نميتونم دانلود کنم متاسفانه ميشه راهنماييم کنين ؟تشکر ا محبتتون
پاسخ مدیر سایت
سلام.از نظر لطفتون سپاسگزارم.......تست کردم لینک دانلود درست بود...لطفا کش مرورگر خودتون رو پاک کنید و دوباره امتحان کنید...نظرتون رو بگید
پاسخ مدیر سایت
مجتبی قنبری
جمعه چهاردهم دی ۹۷
پاسخ
(1)
()
مجتبی قنبری
در مورد مبحث اينترفيس هم جعفر بايد همون اپشن پرايد گاز سوز پدرشو استفاده کنه نمي تونه برقيش کنه خخخ کارت عايه مهندس جان هم کلي ياد گرفتم و هم کلي خنديدم فدايت
مجتبی قنبری
جمعه چهاردهم دی ۹۷
پاسخ
(1)
()
مجتبی قنبری
مهندس جان درس دادنت عاليه ...انقدر به جعفر گير نده
هدر سایت
مشاهده سرفصل ها و ثبت نام در دوره Spring Boot جاواپرو  [کلیک کنید]
آموزش پروژه محور اسپرینگ بوت(Spring Boot)-سیستم دانشگاه
ثبت نام در دوره آموزش Spring security
دوره پرتاب | آموزش پیش نیازهای برنامه نویسی
دوره آموزش مبانی زبان برنامه نویسی جاوا
دوره آموزش مفاهیم پیشرفته زبان برنامه نویسی جاوا
مقدمه ای از زبان برنامه نویسی جاوا(java)
آموزش زبان برنامه نویسی جاوا
آموزش گرافیک در زبان برنامه نویسی جاوا
آموزش مدیریت چیدمان گرافیکی در زبان جاوا
آموزش ساخت بازی دوبعدی در زبان جاوا
Collection ها در زبان برنامه نویسی جاوا
آموزش پروژه محور ساخت برنامه مدیریت بانک با JavaFX
نمونه پروژه های رایگان زبان جاوا
آموزش دیتابیس در زبان برنامه نویسی جاوا
نمونه مثال پایه ای زبان برنامه نویسی جاوا
نمونه مثال String در زبان برنامه نویسی جاوا
آموزش جامع برنامه نویسی JavaFX
آموزش ساخت برنامه آزمون تستی در JavaFX
آموزش برنامه نویسی سوکت در جاوا
آموزش ساخت برنامه دفترچه تلفن با JavaFX
آموزش ساخت ربات ساده تلگرام با زبان جاوا
آموزش ساخت برنامه ماشین حساب با JavaFX
آموزش ساخت برنامه ساده مدیریت ایمیل ها با JavaFX
دوره آموزش Spring Boot
سفارش انجام پروژه زبان برنامه نویسی جاوا(JAVA)
سفارش انجام پروژه برنامه نویسی متلب(MATLAB) با قیمت منصفانه و تحویل به موقع
سفارش انجام پروژه زبان برنامه نویسی سی شارپ (#C)
سفارش انجام پروژه زبان برنامه نویسی سی(C)
سفارش انجام پروژه زبان برنامه نویسی پایتون(Python)
سفارش انجام پروژه زبان برنامه نویسی PHP (پی اچ پی)
سفارش انجام پروژه زبان برنامه نویسی اسمبلی(Assembly)
سفارش انجام پروژه زبان برنامه نویسی جاوا اسکریپت (Javascript)
سفارش انجام پروژه هوش مصنوعی
سفارش انجام پروژه طراحی الگوریتم
سفارش انجام پروژه ساختمان داده ها
سفارش انجام پروژه مهندسی نرم افزار
سفارش انجام پروژه شبکه های کامپیوتری
سفارش انجام پروژه پایگاه داده: دیتابیس (database)
 سفارش انجام پروژه سیستم عامل
سفارش انجام پروژه پاورپوینت(PowerPoint)
سفارش انجام پروژه اکسل (Excel)
سفارش انجام تحقیق و تهیه مقاله
سوالات متداول برنامه نویسی
جدیدترین مطالب
گفتگو را شروع کنید
مشاوره ،تدریس خصوصی و سفارش انجام انواع پروژه های برنامه نویسی