یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی با تخفیف ویژه، فقط با کد AI84 دوره هوش مصنوعی با تخفیف ویژه، فقط با کد AI84
🎯 ثبت نام

آموزش تفاوت interface با کلاس abstract در Java

آموزش Java – تفاوت interface با کلاس abstract در جاوا

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

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

ردیف
کلاس abstract یا انتزاعی
Interface و الگوی پیاده سازی متدها
1
کلاس انتزاعی می تواند داخل بدنه ی خود چندین متد abstract و غیر abstract (با بدنه و پیاده سازی) داشته باشد.
Interface منحصرا می تواند متدهای abstract و بدون بدنه داشته باشد. از ویرایش 8 پلت فرم جاوا، interface می تواند در بدنه ی خود متدهای static و default نیز داشته باشد.
2
کلاس انتزاعی از قابلیت وراثت چندگانه پشتیبانی نمی کند.
در جاوا می توان به واسطه ی interface وراثت چندگانه را پیاده سازی کرد.
3
کلاس انتزاعی می تواند متغیرهای final، غیر final و قابل ویرایش، static (مشترک بین تمامی نمونه ها و ثابت) و غیر static در بدنه خود جای دهد.
Interface فقط می تواند متغیرهای static و final در بدنه ی خود داشته باشد.
4
کلاس انتزاعی می تواند interface را داخل خود پیاده سازی کند.
Interface نمی تواند کلاس انتزاعی را پیاده سازی کند.
5
برای تعریف کلاس انتزاعی لازم است از کلیدواژه ی abstract استفاده شود.
برای تعریف interface باید از کلیدواژه ی interface استفاده شود.
6
مثال کاربردی: public abstract class Shape{
public abstract void draw();
}
مثال کاربردی:
public interface Drawable{
void draw();
}

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//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(); 
}} 
<button></button>

خروجی:

1
2
3
4
5
I am a
I am b
I am c
I am d
<button></button>
1396/07/03 11570 2012
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...