تفاوت بین کلاسهای انتزاعی و رابط ها در جاوا چیست؟


پاسخ 1:
رابط عمومی Balloon {فضای خالی floatAway ()؛ pop void pop ()؛ }
کلاس انتزاعی عمومی Ball roll roll void public () {System.out.println ("من می چرخم.")؛ abstract انتزاع عمومی رشته getColor ()؛ // پیاده سازی مشخص نشده است
چکیده عمومی BlueBall گسترش می یابد توپ {عمومی String getColor () {بازگشت "Blue"؛ // must // باید توسط یک زیر کلاس از isBig عمومی boolean عمومی BlueBall تمدید شود ()؛ }
کلاس عمومی BallBalloon گسترش می یابد Ball پیاده سازی Balloon {public void floatAway () {System.out.println ("سریع حرکت می کند.")؛ } public void pop () {System.out.println ("Fpow!") {عمومی رشته getColor () {بازگشت "سیاه". } isBig عمومی boolean isBig () {// مورد نیاز BlueBall با توجه به اعلام روش انتزاعی بازگشت غلط؛ }

پاسخ 2:

همیشه

واسط ها قراردادهای محکم هستند:

نتایج با کد انعطاف پذیر و معنی دار:

نمایانگر رفتار:

  • آنها بسیاری از رفتارهای کلی و استاندارد را دارند که می خواهید سایر کلاسهای مرتبط را در دسترس قرار دهید. شما یک پروژه پیچیده و گسترده دارید ، بنابراین قابلیت استفاده مجدد از کد و قابلیت نگهداری از آن مهم است. اجرای رفتار استاندارد در یک کلاس واحد ، خوانایی را بهبود می بخشد و باعث می شود کد حفظ شود

پاسخ 3:

در اینجا پاسخ های خوب و فنی زیادی وجود دارد. با این حال ، صحبت در مورد دلیل استفاده از آنها می تواند مفیدتر باشد.

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

شما از کلاسهای انتزاعی استفاده می کنید وقتی دو یا چند کلاس بسیار مشابه دارید و می خواهید آنها یک اجرای را به اشتراک بگذارند ، اما پیاده سازی های مختلف متفاوت است. می توانید برای این کار از کلاس های معمولی استفاده کنید ، اما سپس جد مشترک فوراً فوراً فوری می شود. بنابراین وقتی کلاسهای خواهر و برادر در اجرای برنامه مشترک هستند ، از کلاسهای انتزاعی استفاده می کنید ، اما خود والدین هیچ رفتار مفیدی ندارند.

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

همچنین تعدادی الگوی کلاس ضد رابط و انتزاعی وجود دارد که ممکن است بخواهید آنها را مشاهده کرده و از آنها دوری کنید. رابط ها گاهی اوقات برای علامت گذاری ساده اشیاء از نوع خاصی استفاده می شود بدون اینکه در واقع رفتار را توصیف کند. رابط ها گاه به عنوان مکان های نام ثابت استفاده می شوند. هر دو اصول شی گرا را نقض می کنند.

کلاس های انتزاعی گاهی اوقات برای ساخت کتابخانه های عملکرد در جاوا مورد استفاده قرار می گیرند زیرا جاوا راهی برای قرار دادن توابع در خارج از کلاس ندارد. اگر کلاس انتزاعی با چیزی غیر از روش های استاتیک و مجموعه ای از اشیاء با چیزی جز داده دارید ، پس با کد کسی که ترجیح می دهد به زبانی رویه ای مانند C کار کند ، سروکار دارید.