پرش به محتوای اصلی
مسیر تخصصی جاوا و Spring
درخواست پروژهارتباط با ماراهنما
جاواپرو v1.2.8یاد بگیر، تمرین کن، حرفه‌ای بساز
خانهدوره‌هاآموزش رایگانوبلاگمدرس‌هاخدمات
خانه♨️ جلسه بیست و چهارم - چندریختی را بهتر یادبگیرید
آموزش برنامه نویسی »

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

چندریختی را همراه با مثال از دنیای واقعی یاد بگیرید

۱۱ دقیقه مطالعهآموزش برنامه نویسی »آموزش جاوا و انجام پروژه های برنامه نویسی
♨️ جلسه بیست و چهارم - چندریختی را بهتر یادبگیرید
محتوای منتخب جاواپرو

خلاصه مطلب

چندریختی را همراه با مثال از دنیای واقعی یاد بگیرید
نوع محتوامقاله آموزشی
موضوعآموزش برنامه نویسی »
زمان مطالعه۱۱ دقیقه
آخرین ویرایش۱۴ آذر ۱۴۰۰

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

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

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

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

جلسه اول | راهنمای دانلود و نصب 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 در جاوا

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

اگه میخوای موارد زیر از جاوا رو بدونی جلسه بیست و چهارم رو دانلود کن چندریختی را بهتر یادبگیریم این آموزش مکملی برای درک بهتر مفهوم چندریختی می باشد با مثال های بیشتر سعی شده این مفهوم روشن تر شود

جلسه قبل در مورد چندریختی صحبت کردیم برای درک بهتر این مبحث مهم شی گرایی جلسه ای دیگر را نیز به چندریختی اختصاص داده ایم.قبل از مطالعه این جلسه ، جلسه قبل یعنی چندریختی در جاوا را مطالعه کنید.

پلی مورفیسم یا چندریختی یکی از مفاهیم شی گرایی در جاوا است.این مفهوم تا حدودی دشوار و گیج کننده است!!! به همین خاطر یک جلسه دیگه هم برای بررسی این مفهوم چغر و بد بدن قرار داده ایم :-)

دلیل گیج کننده بودن این مفهوم این است که نسبت به سایر مفاهیمی که تا الان بررسی کردم انتزاعی است،با این حال شما میتونید در پلی مورفیسم استاد بشید و برآن مسلط بشید و به کمر خاکش کنید 😊

برای یادگیری بهتر چندریختی یا هر مفهوم جاوای دیگر باید تمرین و مثال عملی زیادی حل کنید تا یواش یواش مفهومش دستتون بیاد.چون امکان داره توضیحات تئوری جز گیج تر کردن شما دست آورد دیگه ای نداشته باشه.

بیایید صدای گربه را بررسی کنید!!!!! گربه یک عمل صداکردنی داره و صدای آن میو میو...!!!! هستش سگ هم صدا داره و عمل صدا کردن سگ واق واق...... هستش!!!! پس قبول میکنید که هر حیوانی یک عمل صدا کردنی دارد که بین همه ی آن ها مشترک هستش اما با صدایی متفاوت؟!!!!!!!!!!!!!!!!!

عمل صدا کردن را یک متد به نام ()makeSound در نظر میگیریم . تفاوت صدا گربه با سگ و سایر حیوانات را دستور درون متد در نظر میگیریم. یعنی یک متد که نام مشترکی برای همه حیوانات دارد اما دستوری ( تفاوت صدا) متفاوت. مثلا متد ()makeSound را برای حیوانات بصورت زیر بررسی میکنیم:

گربه

public void makeSound(){ System.out.println("Miu Miu...."); }

سگ

public void makeSound(){ System.out.println("Vagh Vagh...."); }

مرغ

public void makeSound(){ System.out.println("ghot ghot...."); }

در سه مثال بالا همان طور که مشاهده میکنید سه متد با نام یکسان ( عمل صدا کرد) اما دستوری متفاوت ( تفاوت در صدای حیوانات) در بدنه خود دارند.یعنی همه حیوانات()makeSound (عمل صدا کردن ) را دارند اما دستوری متفاوت ( صدایی متفاوت) با توجه به نوع حیوان به نمایش میزارند. قبول دارید که مرغ و خروس و سگ و گربه و.... همه حیوان هستند اما در شکل و قالبی متفاوت. یعنی گربه حیوانی است که در شکل گربه ظاهر شده یا مرغ حیوانی است که در شکل مرغ ظاهر شده یعنی نوع همه آنها حیوان است اما در شکل گربه و مرغ و خروس و... ظاهر شده اند.

چندریختی یا پلومورفیسم هم این مفهوم را بیان میکند،چندریختی میگه یک حیوان میتونه در شکل های گوناگون ظاهر شود.مثلا یک حیوان متد ()makeSound و عمل صدا کردن را دارا می باشد.حالا این متد با توجه به نوع حیوان عمل (صدای) متفاوتی را به نمایش میگذارد.

در چندریختی تمرکز ما روی متدهای مشترک با دستورات متفاوت می باشد.

مثل متد صدا کردن که بین همه حیوانات مشترک هست اما برای هر حیوان دستور صدا متفاوت است.

در چندریختی مثلا وقتی کلاس حیوان میخواد در شکل کلاس گربه،کلاس سگ،کلاس مرغ ظاهر شود متدهایی نظیر عمل صدا کردن که بین گربه و سگ و مرغ مشترک هست در همه این کلاس ها override (بازنویسی) می شود.یعنی متد صدا کردن که درون کلاس حیوان هست با توجه به نوع صدا و دستور هر حیوان درون کلاس های گربه و سگ و مرغ override می شود.

کلاس Animal را در زیر مشاهده میکنید که متد makeSound در بدنه آن پیاده سازی شده است که یک دستور کلی را اجرا میکند. این یعنی همه حیوانات یک عمل صدا کردنی را دارند اما نوع صدا کردن باتوجه به نوع حیوان تغییر میکند.خب حالا ما میخواهیم متد ()makeSound در کلاس Animal صدای گربه را بدهد. برای این کار باید یک کلاس تعریف کنیم به نام Cat که کلاس Animal را به ارث می برد. متد makeSound کلاس Animal را در کلاس Cat override (بازنویسی) میکنیم یعنی همون متد با همون نام با همون پارامتر و با همان نوع اما بادستوری متفاوت را در کلاس فرزند یعنی Cat پیاده سازی میکنیم.

class Animal { public void makeSound() { System.out.println("animal sounds"); }}class Cat extends Animal { public void makeSound() { System.out.println("miu miu"); }}

• ما برای این که متد ()makeSound کلاس Animal صدای گربه بدهد یعنی کلاس Animal در زمینه صدا کردن به شکل گربه دربیاد متد makeSound را درون کلاس Cat ، override کرده ایم.

• حالا ما باید کاری کنیم که وقتی یک شی از کلاس Animal ایجاد کردیم اون شی زمانی که متد makeSound را صدا میزند بجای پیام "animal sounds" پیام "miu miu" را در خروجی چاپ کند.یعنی شی کلاس Animal به شکل شی کلاس Cat ظاهر شود. یعنی وقتی شی کلاس Animal میخواد عمل صدا کردن را انجام دهد بگه “miu miu” خب چطور باید این کار را انجام بدیم؟

پس رسالت این است که ما کلا با شی کلاس پدر یعنی Animal سروکار داریم و کلاس های فرزند نظیر کلاس گربه که کلاس حیوان را به ارث برده است در عمل فقط یک حالت انتزاعی و پنهان هستند و ما تنها طرف حسابمون کلاس و شی پدر هستش.

قبل از این که ادامه این مثال را بررسی کنیم بزارید تا یک مثال از دنیای واقعی برای درک این موضوع برای شما بگم: ایا شما پرنده ٌطرقه را میشناسید؟طرقه پرنده ای خوش آواز هستش که اواز آن تقلیدی از آواز سایر پرندگان می باشد.یعنی طرقه گاهی به شکل بلبل درمیاد و اواز بلبل را سر میدهد گاهی شبیه قناری ظاهر میشه و مثل قناری میخواند گاهی به شکل پرنده ای دیگر در می اید و میخواند. پرنده طرقه شبیه به گنجشک و خاکستری رنگ می باشد. ما در آواز خوانی طرقه هیچ ظاهری و شمایلی از قناری خوش رنگ و بلبل و .... نمی بینیم گویی قناری و بلبل و... در کالبد طرقه پنهان شده اند و با وجود این که صدای سایر پرندگان را میشنویم اما طرف حساب ما تنها پرنده طرقه هست. یعنی میتوان گفت پرندگان دیگر طرقه را به ارث برده اند و طرقه پدر آنها هستش و متد آواز خوانی طرقه در بدنه همه کلاس های فرزندان بازنویسی شده و طرقه میتونه از این طریق به شکل هر کدوم از پرنده ای که دوست دارد ظاهر شود و اواز بخواند. در چندریختی هم دقیقا همین طور هست همه فرزندان کلاس پدر در کالبد پدر پنهان شده اند و پدر با دستور خاص خود به شکل هر فرزندی که دوست داشت درمی آید. تغییر شکل کلاس پدر به شکل کلاس فرزند در قالب متد رخ می دهد. خب ما در پلی مورفیسم هم تنها با شی کلاس پدر سرو کار داریم و شی کلاس پدر تنها به تمام ویژگی ها و رفتار های کلاس خودش دسرسی دارد با این تفاوت که هر متدی از کلاس پدر که در کلاس فرزند override یا بازنویسی شده هنگام صدا زدن آن به جای اجرای دستور متد پدر دستور متد فرزند اجرا می شود. مثلا متد ()makeSound که درون کلاس Animal هستش و دستور "Animal Sounds " را در خروجی چاپ میکند اگر این متد در کلاس یکی از فرزندان مثلا کلاس Cat ، override یا بازنویسی شود و دستور درون این متد در کلاس Cat به چاپ پیام "miu miu" تغییر کند.شی ای که به روش چند ریختی (پلی مورفیسم) از کلاس پدر یعنی Animal ایجاد میشود هنگام صدا زدن متد ()makeSound بجای چاپ پیام "animal sounds" که درون کلاس پدر یعنی Animal قرار دارد دستور چاپ پیام "miu miu" این متد که درون کلاس فرزند یعنی Cat قرار دلرد را اجرا میکند.دقیقا شبیه پرنده طرقه که ما در ظاهر با طرقه سر و کار داریم اما طرقه آواز قناری را میخواند. خب تا اینجا شما بصورت تئوری با مفهوم چندریختی آشنا شدید حالا میخواهیم کد مثال بالا که شی حیوان میخواد به شکل شی گربه دربیاد را بصورت عملی پیاده سازی کنیم:

در مثال زیر شی سازی حالت عادی که از کلاس ها ایجاد میکردیم را مشاهده میکنید:

package polymorphism_JavaPro;class Animal { public void makeSound() { System.out.println("animal sounds"); } public void eat() { System.out.println("animal eat"); } }class Cat extends Animal { public void makeSound() { System.out.println("miu miu"); }}public class Test { public static void main(String[] args) { Animal a1=new Animal(); a1.eat(); a1.makeSound(); } }

خروجی:

animal eat animal sounds

• در این مثال یک شی به نام a1 از کلاس Animal ایجاد کرده ایم.

• شی a1 به تمام ویژگی ها و رفتارهای کلاس Animal دسرسی دارد.

• از طریق شی a1 متدهای ()makeSound و ()eat را صدا زده ایم.

• همان طور که مشاهده میکنید دستورات اجرا شده درون این دو متد کاملا متعلق به کلاس Animal هستش.

• حالا قصد داریم کلاس Animal در شکل کلاس Cat ظاهر شود مثلا وقتی شی ای از کلاس Animal ساختیم آن شی صدای گربه را دربیارد. برای این کار کلاس Cat باید کلاس Animal را به ارث ببرید و متدی (عمل صدا کرد) makeSound() کلاس Animal را درون کلاس Cat بازنویسی و override کنیم. حالا وقت شی ساختن از کلاس Animal میرسه که این شی همان طور که گفتیم تنها و تنها و تنها!!!!!!! به متغیرها و متدهای کلاس پدر یعنی Animal دسرسی دارد.یعنی مثل روان عادی که شی یک کلاس میتونه به متغیرها و متدهای کلاسش دسرسی پیدا کند و فقط تنها تفاوت این است که شی کلاس Animal هنگام صدا زدن متدهایی از کلاس Animal که در کلاس فرزندش یعنی Cat ، override شده بجای اجرای دستورات خود متد پدر ،دستور override شده اجرا می شود: • خب ما تا اینجا کلاس Animal و کلاس Cat را ایجاد کرده ایم و کلاس Cat کلاس Animal را به ارث برده است و متد makeSound درون کلاس Cat ،override شده است حالا وقت شی ساختن از کلاس Animal به روش چندریختی هست برای این کار در جلسه قبل شی ساختن یک کلاس بصورتی که در شکل شی کلاس دیگر ظاهر شود را یادگرفیتیم اما دوباره مروری میکنیم:

سازنده کلاس فرزند + new + = + نام شی + نام کلاس پدر

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

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

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

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

مشاهده لینک اصلی
تصویر مرتبط با ♨️ جلسه بیست و چهارم - چندریختی را بهتر یادبگیرید
مشاهده لینک اصلی
تصویر مرتبط با ♨️ جلسه بیست و چهارم - چندریختی را بهتر یادبگیرید
عضو کانال تلگرام
بخش هایی از کتاب جلسه بیست و چهارم - چندریختی را بهتر یادبگیرید در جاوا را مشاهده می کنید برای دانلود بر روی لینک دانلود کلیک کنید
بخش هایی از کتاب جلسه بیست و چهارم - چندریختی را بهتر یادبگیرید در جاوا را مشاهده می کنید برای دانلود بر روی لینک دانلود کلیک کنید
بخش هایی از کتاب جلسه بیست و چهارم - چندریختی را بهتر یادبگیرید در جاوا را مشاهده می کنید برای دانلود بر روی لینک دانلود کلیک کنید
بخش هایی از کتاب جلسه بیست و چهارم - چندریختی را بهتر یادبگیرید در جاوا را مشاهده می کنید برای دانلود بر روی لینک دانلود کلیک کنید
بخش هایی از کتاب جلسه بیست و چهارم - چندریختی را بهتر یادبگیرید در جاوا را مشاهده می کنید برای دانلود بر روی لینک دانلود کلیک کنید
بخش هایی از کتاب جلسه بیست و چهارم - چندریختی را بهتر یادبگیرید در جاوا را مشاهده می کنید برای دانلود بر روی لینک دانلود کلیک کنید
بخش هایی از کتاب جلسه بیست و چهارم - چندریختی را بهتر یادبگیرید در جاوا را مشاهده می کنید برای دانلود بر روی لینک دانلود کلیک کنید
بخش هایی از کتاب جلسه بیست و چهارم - چندریختی را بهتر یادبگیرید در جاوا را مشاهده می کنید برای دانلود بر روی لینک دانلود کلیک کنید
برچسب‌هاآموزش برنامه نویسی »آموزش زبان جاوا »آموزش جاوا »آموزش ساده چندریختی درجاواآموزش ساده پلی مورفیسم در جاواچگونه چندریختی را یادبگیریمآموزش ساده و آسان جاواجاوا را به زبان ساده یاد بگیریدآموزش چندریختیآموزش پلی مورفیسمآموزش چندریختی همراه با مثالآموزش زبان جاواآموزش جاوااموزش جاواآموزش آسان جاوا
دسترسی سریع

فهرست مطلب

۱فهرست جلسات دوره مقدماتی جاوا۲مقدمه اول | جاوا چیست؟۳مقدمه دوم | تاریخچه جاوا۴مقدمه سوم | ویژگی‌های زبان جاوا۵جلسه اول | راهنمای دانلود و نصب 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 در جاوا
ادامه مسیر

پیشنهاد جاواپرو

موضوع را با آموزش‌های مرتبط ادامه دهید و نکته‌های کاربردی را در مسیر خود نگه دارید

مشاهده دوره‌ها
مطالب پیشنهادی

ادامه مطالعه

xدسته‌بندی نشده
۱۱ دی ۱۳۹۸ مطالعه کوتاه

x

پادکست شماره 3 – راه های کسب درآمد از برنامه نویسی

مطالعه مطلب
پادکست شماره 3 - راه های کسب درآمد از برنامه نویسیپادکست
۲۹ اردیبهشت ۱۴۰۴ مطالعه کوتاه

پادکست شماره 3 - راه های کسب درآمد از برنامه نویسی

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

مطالعه مطلب
پادکست شماره 2 - چگونه وارد فضای برنامه نویسی شویم؟پادکست
۲۹ اردیبهشت ۱۴۰۴ مطالعه کوتاه

پادکست شماره 2 - چگونه وارد فضای برنامه نویسی شویم؟

در این پادکست برنامه نویسی یاد میگیریم که چگونه وارد فضای برنامه نویسی شویم و تخصص برنامه نویسی را به دست آوریم.

مطالعه مطلب
جاواپرومرجع تخصصی یادگیری و توسعهٔ جاوا

تجربه‌ای منظم، ساده و حرفه‌ای برای یادگیری عمیق جاوا، Spring و مهندسی نرم‌افزار؛ قابل استفاده در موبایل، تبلت و دسکتاپ

یادگیری

همه دوره‌هاآموزش رایگانمسیر یادگیریمدرس‌ها

جاواپرو

درباره ماخدمات تخصصیدرخواست پروژهبلاگ فنی

پشتیبانی

تماس با ماپرسش‌های متداولقوانین و حریم خصوصیبروزرسانی‌های جاواپروثبت تیکت
خرید امنپرداخت فقط در درگاه رسمیپشتیبانی آموزشیمسیر ارتباط شفاف و پیگیری‌پذیردسترسی پایداروب‌اپ واکنش‌گرا روی همه دستگاه‌ها
© ۱۴۰۵ جاواپرو؛ همه حقوق محفوظ استتوسعه توسط پایاپینگ
خانهدوره‌هاسبد