خرداد ۸, ۱۳۹۸ Mostafa بدون دیدگاه

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

توجه : درخواست افزونه ،قالب، اسکریپت و نرم افزار و ... و سوالات و مشکلات خود را در انجمن ارسال نمایید

کلاس abstract و interface هر دو برای پیاده سازی مفهوم انتزاع/abstraction در برنامه نویسی بکار می روند که می توانید در بدنه ی آن ها متدهای abstract (بدون بدنه و پیاده سازی) را تعریف کنید. کلاس abstract و interface هر دو غیر قابل نمونه سازی هستند و به عبارت ساده تر نمی توان مانند کلاس از روی آن ها آّبجکت ساخت.

با این حال تفاوت های متعددی بین کلاس abstract و interface وجود دارد که در جدول زیر به آن ها اشاره می کنیم :

Abstract classاینترفیس
کلاس انتزاعی می تواند داخل بدنه ی خود چندین متد abstract و غیر abstract (با بدنه و پیاده سازی) داشته باشد.
Interface منحصرا می تواند متدهای abstract و بدون بدنه داشته باشد. از ویرایش 8 پلت فرم جاوا، interface می تواند در بدنه ی خود متدهای static و default نیز داشته باشد.
کلاس انتزاعی از قابلیت وراثت چندگانه پشتیبانی نمی کند.
در جاوا می توان به واسطه ی interface وراثت چندگانه را پیاده سازی کرد.
کلاس انتزاعی می تواند متغیرهای final، غیر final و قابل ویرایش، static (مشترک بین تمامی نمونه ها و ثابت) و غیر static در بدنه خود جای دهد.
Interface فقط می تواند متغیرهای static و final در بدنه ی خود داشته باشد.
کلاس انتزاعی می تواند interface را داخل خود پیاده سازی کند.
Interface نمی تواند کلاس انتزاعی را پیاده سازی کند.
برای تعریف کلاس انتزاعی لازم است از کلیدواژه ی abstract استفاده شود.
برای تعریف interface باید از کلیدواژه ی interface استفاده شود.
یک کلاس انتزاعی می توانید از کلاس انتزاعی دیگر و چندین اینترفیس بسط داده شود.یک اینترفیس تنها می تواند از یک اینترفیس دیگر در خود استفاده کند.
کلاس انتزاعی با کلمه کلیدی extends بسط داده می شودبرای استفاده از اینترفیس از کلمه implements می توانید استفاده کنید
اعضا یک کلاس انتزاعی می توانند بصورت public,private و … شود.اعضای یک اینترفیس بصورت پیشفرض public  می باشند
مثال :
public abstract class Shape{
public abstract void draw();
}
مثال :
public interface Drawable{
void draw();
}

به عبارت ساده، کلاس abstract می تواند از 0 تا 100 درصد از مفهوم abstraction را پیاده سازی کند اما interface به طور کامل و 100 درصد مفهوم نام برده را پیاده سازی می کند.

مثال کاربردی از کلاس abstract و interface در جاوا

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

//Creating interface that has 4 methods  
interface A{  
void a();//bydefault, public and abstract  
void b();  
void c();  
void d();  
}  
//Creating abstract class that provides the implementation of one method of A interface  
abstract class B implements A{  
public void c(){System.out.println("I am C");}  
}  
//Creating subclass of abstract class, now we need to provide the implementation of rest of the methods  
class M extends B{  
public void a(){System.out.println("I am a");}  
public void b(){System.out.println("I am b");}  
public void d(){System.out.println("I am d");}  
}  
//Creating a test class that calls the methods of A interface  
class Test5{  
public static void main(String args[]){  
A a=new M();  
a.a();  
a.b();  
a.c();  
a.d();  
}}

خروجی :

I am a
I am b
I am c
I am d


برچسب ها
نظرات

توجه : لطفاً فقط نظرات خود را از این طریق ارسال نمایید و سوالات و مشکلات خود را در انجمن سایت مطرح نمایید.