خانه اندروید

بیش از 150 ساعت آموزش فارسی

بیش از 10 هزار دانشجو

آموزش هایی کاملا اختصاصی

مطالب پیشنهادی حتما مشاهده کنید :

انتزاعی مخفی کردن نحوه پیاده سازی (Abstraction) در جاوا

انتزاعی مخفی کردن نحوه پیاده سازی (Abstraction) در جاوا

انتزاعی مخفی کردن نحوه پیاده سازی (Abstraction) در جاوا

نحوه پیاده سازی (Abstraction)

Abstraction ، سلام کاربران محترم سایت خانه اندروید در خدمت شما هستیم با مفهومی با نام Abstract ، همانطور که در دیکشنری آمده است، Abstraction تعریفی است، که به جای رویداد ها و رخداد ها با ایده ها سر و کار دارد. به عنوان مثال در مورد ایمیل، پروتکلی که سرور ایمیل شما استفاده میکند از کاربر پنهان است، از این رو برای ارسال یک ایمیل کاربر تنها نیاز به تایپ content، address و کلیک برو روی ارسال (send) خواهد داشت. بدین معنی که کاربر ایمیل خود را ارسال می کند اما از نحوه پیاده سازی و نحوه ارسال کردن ایمیل چیزی نمی داند.

در کلاس Abstraction  کاربر نمی داند که دقیقا نحوه ارسال کردن ایمیل چطور پیاده سازی شده است تنها عملکرد کلی به کاربر ارائه می شود. یا بزارین تعریف دیگه ای داشته باشیم ( کاربر به جای داشتن اطلاعات درباره چگونگی انجام کار توسط شیء، به اطلاعاتی درباره آنچه که شیء انجام میدهد خواهد داشت.)

اما بریم سراغ نحوه پیاده سازی کلاس Abstract :

در اندروید استودیو هر کلاس دارای کلمه کلیدی Abstract  باشد را به عنوان کلاس Abstract تشخیص داده می شود.

نحوه پیاده سازی (Abstraction)

خصوصیات کلاس Abstract

در کلاس ایمیل زیر ما یک Abstraction را ایجاد می کنیم دقت کنید یک همنام با کلاس تعریف شده است که به آن سازنده می گویند.

توضیحات کلاس بالا :

instantiate به معنی نمونه .

نکته : کلاس  که abstract باشد نمی توانید از آن نمونه بسازید.

مثالی از نمونه سازی از یک کلاس غیر abstract  ، فقط برای اینکه متوجه شوین نمونه چیست !

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

ارث بری کردن از کلاس Abstract
همانطور که در کد زیر مشاهده می کنید، می توان خصوصیات کلاس childsend را درست مانند یک کلاس معمولی ارث بری کرد:

در اینجا، شما نمی توانید کلاس Email را instantiate کنید، ولی می توانید کلاس childsend  را instantiate کنید، و با استفاده از این instance، همانطور که در کد زیر مشاهده میکنید، می توانید به تمامی سه فیلد و هفت تابع کلاس Email دسترسی پیدا کنید.

مثال زیر را ببنید :

متد یا تابع  Abstract
در صورتی که می خواهید یک کلاس دارای یک تابع بخصوص باشد، ولی پیاده سازی آن تابع تنها توسط کلاس های فرزند (کلاس هایی که از این کلاس ارث بری کرده اند) باشد، آنگاه شما میتوانید تابع را در کلاس پدر به صورت abstract تعریف کنید.

کلمه کلیدی abstract برای تعریف تابع به صورت abstract استفاده میشود.
کلمه کلیدی abstract در تعریف تابع باید قبل از نام آن استفاده شود.
یک تابع abstract تنها حاوی تعریف تابع است، و هیچ بدنه ای ندارد، بدین معنی که تابع abstract در زمان تعریف پیاده سازی نمی شود.
تابع abstract به جای آکولاد یک سمی کالن (;) در انتهای تعریف خود دارد.
در زیر یک مثال از تابع abstract آورده شده است.

تعریف یک تابع به صورت abstract نتایج زیر را باعث میشود:

کلاسی که دارای این تابع است باید به صورت abstract تعریف شود.
هر کلاسی که از این کلاس ارث بری کند، یا باید تابع abstract را override کند، یا خودش به صورت abstract تعریف شود.
نکته: نتیجه آنکه، کلاس مشتق شده از کلاس abstract باید تابع abstract را پیاده سازی کند؛ مگر آنکه بخواهید سلسله مراتبی از کلاس های abstract داشته باشید که نمی توانند instantiate شوند.

فرض کنید کلاس childsend از کلاس Email ارث بری کرده است، در این صورت کلاس Salary باید تابع ()computePay را همانند زیر پیاده سازی کند:

موفق باشین.

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

Admin
جواد محمدی هستم کارشناس و مهندس ارشد نرم افزار و مدیر و بنیان گذار سایت خانه اندروید نویسنده و برنامه نویس ارشد اندروید ۴ سال در زمینه اندروید به صورت تخصصی مدرس هستم و مدرس دوره دیجی کالا و متخصص گوگل مپ و ... هستم خوشحالم که توانستم دانسته های خودم رو در سایت خانه اندروید برای کاربران محترم به اشتراک گذاشتم. بیشتر در مورد جواد محمدی برنامه نویس سی شارپ برنامه نویس سی برنامه نویس سی پلاس پلاس برنامه نویس java برنامه نویس kotlin برنامه نویسی nodejs برنامه نویس تحت وب php و ...

قبل از ارسال دیدگاه

  • قبل از ارسال دیدگاه: لطفا دیدگاه خودتون رو فقط در مورد این مطلب بنویسید.سپاسگزارم.

    دیدگاه های طولانی نادیده گرفته می شوند لذا دیدگاه خودتان را در دو خط خلاصه کنید.

    دیدگاه های که شامل توهین یا متن توهین آمیز اصلا تایید نمی شود.

بدون دیدگاه