Programming? – Telegram
Programming?
11.9K subscribers
373 photos
645 videos
978 files
511 links
🏅Channel privileges

🎗Ninth year of operation
🎗Completely specialized members
🎗Transmitter in channel automation
🎗, ...

🎯 second channel Programming books 👇
@topbookit

🎯 third channel laptop👇
@sysline


👨🏻‍💻Admin channels : @coderme
Download Telegram
خوب در تصویر بالا ما متد motor رو که تو کلاسمون تعریف کرده بودیم هم با شی ای از کلاسمون تغریف کردیم متد رو فراخونی کردیم و اجرا هم کردیم
ارث بری Inheritance :
خوب مبحث ارث بری رو هم در جلسه قبل کامل توضیح دادیم و در جلسه تا حدی بهش می پردازیم اگر کلاسی رو که با نام car ایجاد کردیم کلاس والد در نظر بگیریم باید یک کلاسی تعریف کنیم در پروژه مون که بتونه از این کلاس ارث بری بکنه یا همون نقش کلاس فرزند رو ایفا بکنه برای این کار دوباره مثل ایجاد کلاس car عمل می کنیم و یک کلاس با نام Bmw به پروژمون اضافه می کنیم
خوب در تصویر بالا ما یه کلاس با نام bmw به پروژمون اضافه کردیم و همان گونه که در تصویر با کامنت مشخص کردیم توسط کلمه کلیدی extends از کلاس car ارث بری کردیم و همچنین متد سازنده رو که در کلاس car تعریف کردیم رو در کلاس bmw به ارث بردیم مقدار ورودی متد سازنده رو از طریق کلمه کلیدی super فراخوانی کردیم پس به همین صورت می تونین به تمام اجزای کلاس car دسترسی داشته باشیم از طریق ارث بری در قسمت پایین متد سازنده در تصویر یک خصوصیت با نام name تعریف کردیم همنام با خصوصیتی که در کلاس car تعریف کردیم یک متد با نام motorbmw هم در کلاسمون تعریف کرده ایم اما در متد بعدی که با نام engin تعریف کردیم خصوصیت name کلاس car رو داخل این متد باز از طریق super فراخوانی کرده ایم بنابراین برای استفاده از این کلاس در متد اجرایی می توانیم به گونه ای که قبلا از کلاس car اجرایی گرفتیم از کلاس bmw هم همین کا رو انجام بدیم بعلاوه اینکه وقتی شی از کلاس bmw ایجاد کردیم می تونیم به تمام اجزای کلاس car هم دسترسی داشته باشیم
خوب در تصویر بالا یک شی از کلاس bwm ایجاد کردیم و از این طریق به تمام اجزای خود کلاس و اجزای ارث برده شده از کلاس car دسترسی پیدا کردیم و با فراخوانی نتیجه رو نمایش دادیم
در جلسه قبل به نحوه ایجاد کلاس تعریف اجزای کلاس و همچنین نحوه ارث بردن یه کلاس از کلاس والد خود را هم آموزش دادیم و به نحوه اجرایی گرفتن از کلاس ها هم پرداختیم در این جلسه نیز بقیه مباحث مربوط به شی گرایی رو دنبال خواهیم کرد
مبحث Ovrriding :
خوب فرض کنید ما در کلاس والد car که داشتیم یک متد ایجاد کنیم با بدنه مخصوص خود اگر یه متد با همان نام و مشخصات در کلاس فرزند bmw که داشتیم ایجاد کنیم ولی با این تفاوت که بیاییم دستورات بدنه متد رو به خاطر نیازمون تغییر بدیم به این فرآیند ovrride کردن می گویند به تصاویر زیر دقت کنید
خوب در تصویر که می بینید ما تو کلاس والد car یه متد به نام motor تعریف کردیم که یک متن رو چاپ می کنه حالا به تصویر زیر دقت کنید
خوب در تصویر بالا اومدیم در کلاس فرزند bmw همون متد رو با همون نام جزپیات تعریف کردیم ولی در قسمت بدنه متد اگر توجه کنید نوع متن چاپی رو تغییر دادیم یا اصلا می تونستیم دستورات دیگری بنویسیم
و در حقیقت عمل ovrriding رو انجام دادیم به همین صورت می تونیم متدهای کلاس والد رو اوراید کنیم و بنابه نیازی که داریم در کلاس فرزند دستورات داخل مند رو تغییر بدیم و پیاده کنیم خوب حالا بیایید از این متد ها خروجی بگیریم 👇👇👇👇
خوب در تصویر بالا ما در کلاس main و متد اجرایمون اومدیم از کلاس والد car و کلاس فرزند bmw یک شی ساختیم
و اگر توجه کنید در تصویر توسط کامنت نیز مشخص کردم به هر دو متد motor توسط شی ای که از کلاس تعریف کردیم دسترسی پیدا کردیم که در کلاس فرزند تو نستیم متد اوراید شده رو اجرا کنیم که اگر در خروجی گرفته شده از برنامه دقت کنید خروجی ها با هم تفاوت دارن ینی کلاس فرزند متد اوراید شده رو فراخوانی می کند برای اجرا
چند ریختی Polymorphism :
ما دون نوع چندریختی در جاوا داریم که هر دو نوع رو توضیح خواهیم داد
چند ریختی استاتیک :
فرض کنید ما داخل یک کلاس بیاییم و چند متد هم نام و دقیقا شبیه هم تعریف کنیم موقع اجرای این متدها صد درصد کامپایلر به مشکل خواهد خورد به این دلیل که نمی تواند تشخیص بدهد که کدا متد باید اجرا شود و یا اینکه متدها تکراری هست خطا حواهد داد ولی اگر این متدهایی رو که تعریف کرده ایم پارامترهای ورودی متفاوتی داشته باشند کامپایلر می تواند از نوع پارامتر های ورودی هر تابع تضخیص بدهد که کدا متد باید اجرا شود با اینکه متدها ها هم نام باشند به این تعریف متد ها چندریختی ایستاتیک گفته می شود.