+1 امتیاز
قبل در برنامه نویسی توسط (5 امتیاز)
ویرایش شده قبل توسط

میشه یک توصیح مختصر در مورد کاربرد کلاس های abstract و interface در جاوا بدید؟

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

5 پاسخ

+2 امتیاز
قبل توسط (30 امتیاز)

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

1- کلاس انتزاعی می تواند شامل فیلد ها ، سازنده ها ، و متدهای غیر انتزاعی باشند
2- کلاس انتزاعی می تواند یک یا چند متد انتزاعی داشته باشد.
3-اگر کلاسی حاوی متد انتزاعی باشد ، باید انتزاعی اعلان گردد.
4-نمی توانید از یک کلاس انتزاعی ، شی ء ای را نمونه سازی کنید ، فقط می توانید یک متغیر مرج از نوع کلاس انتزاعی اعلان کنید.

interface:خط اتصال(معنای لغوی)
در جاوا ، واسط ، نوعی کلاس است که فقط شامل متدهای انتزاعی و یا ثواب است . شباهت کلاس های انتزاعی و واسط ها این است که نمی توان اشیایی را از آن ها نمونه سازی کرد و تفاوت آنها در این است که کلاس های انتزاعی می توانند حاوی متدهای غیر انتزاعی و هر نوع فیلدی باشند ، در حالی که واسط ها فقط داری متدهای انتزاعی و ثابت های از نوع static final  هستند.
ممکن است این سوال مطرح شود که چرا جاوا از واسط ها پشتیبانی می کند؟ پاسخ این است که جاوا از وراثت چندگانه پشتیبانی نمی کند ، یک کلاس فقط می تواند از یک کلاس پایه مشتق شود . اما برنامه جاوا می تواند شامل چندین مولفه GUI (واسط گرافیکی کاربر) باشد و در نتیجه ، رویداد های گوناگونی مثل رویداد های ماس ، و رویداد های عملیات را تولید نماید . این رویداد ها از طریق پیداه سازی واسط های جداگانه اداره می شوند.بنابراین ، ممکن است برنامه نیاز به استفاده از چندین واسط داشته باشد . گرچه کلاس جاوا می تواند فقط از یک کلاس مشتق شود ، ولی می تواند چندین واسط را پیاده سازی کند.

چند لینک مفید :

منبع : سایت برنامه نویس پست مرتبط با این بخش

ویدیوی آموزشی کلاس انتزاعی که در این پست برای توضیح آمده است

الویت بندی پاسخ های مشاهده شده در سایت ها:

100 % پاسخ مناسب

70 % پاسخ مناسب

منابع مناسب در کتب:

کتاب آموزش گام به گام برنامه نویسی به زبان جاوا -جعفر نژاد قومی -چاپ دوم پاییز 1390  :

فصل هفتم صفحه ی 256 توضیحات مرتبط با کلاس های انتزاعی abstract class

فصل هشتم صفحه ی 266 توضیحات مرتبط با واسط ها interface

نوشته شده توسط جوان ایرانی

+1 امتیاز
قبل توسط (778 امتیاز)
چیزی که بیشتر در عمل استفاده می شه این است که از interface برای چند ریختی و از abstract class برای ایجاد یک base class استفاده می شود.
0 امتیاز
قبل توسط (1.1هزار امتیاز)

هر دو نوع، کلاس های abstract و interface ها در مواردی کاربرد دارد که شما می خواهید یک یا چند امضای متد (method signature) در یک کلاس پدر حتما وجود داشته باشد ولی پیاده سازی (بدنه متد) نداشته باشد و تمام کلاس های فرزند مجبور باشند آن متدها را به روش خود پیاده سازی کنند (و یا اینکه خود abstract یا interface باشند).

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

یکی از کاربرد های دیگر کلاس های abstract و interface ها تعریف متد های callback است. برای این کار متد callback بصورت abstract در یک کلاس abstract تعریف می شود و یا بصورت یک متد در یک interface تعریف می شود.

0 امتیاز
قبل توسط (20 امتیاز)
ویرایش شده قبل توسط

تفاوت بین کلاس Abstract و Interface در جاوا رو به زبان ساده و مرتب در این لینک میتونید مشاهده کنید.

0 امتیاز
قبل توسط (30 امتیاز)
بین احتمالا با مفهوم مفهوم abstraction آشنایی داری.وقتی ما از abstract استفاده میکنیم میتونیم از 0 تا 100 درصد مفهوم abstraction ر. پیاده سازی کنیم.
حالا وقتی از intrface  استفاده میکنیم باید بصورت 100درصد مفهوم abstraction رو پیاده سازی کنیم.

کلاس abstract میتونه interface رو داخل خودش پیاده سازی کنه ولی برعکسش نه و ... خیلی تفاوت های دیگه

مزیت abstract  اینه که داخل بدنه ی خودش میتونه چندین متد abstract و غیر abstract(پیاده ساز شده) داشته باشه.

سوالات مشابه

0 امتیاز
0 پاسخ 782 بازدید
+1 امتیاز
1 پاسخ 3.8هزار بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط mp (7.0هزار امتیاز)
0 امتیاز
1 پاسخ 589 بازدید
0 امتیاز
1 پاسخ 925 بازدید
+3 امتیاز
1 پاسخ 958 بازدید
0 امتیاز
1 پاسخ 330 بازدید
0 امتیاز
0 پاسخ 510 بازدید
+1 امتیاز
0 پاسخ 3.5هزار بازدید
...