# Native Code > برنامه نویسی موبایل > Android Studio >  کلاس abstract چیست؟

## vahidak64

وقتی یک کلاس ابسترکت میشه چه اتفاقی میفته؟

----------


## rubiks.kde

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

----------


## vahidak64

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


ممنون 
حالا مسیله مهمتر اینه که این کار به چه دردی میخوره؟
تو فروم جاوا رفتم یه چیزایی خوندم ولی خیلی مفهوم نبود برام
ظاهرا مسیله خیلی مهم و پیچیده ای باید باشه قضیه ابسترکت و اینترفیس و وراثت چندگانه

----------


## rubiks.kde

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

----------


## spiderman200700

> و توابعی هم که در درون اون تعریف میشن به صورت abstract هستند و تنها تعریف میشن و بدنه ندارند.ولی زمانی که که یک کلاس از کلاس abstract مشتق بشه
> باید اون توابع رو پیاده کنه


 با احترام.
باید توجه داشت که تنها متدهایی از کلاس abstract الزام به پیاده سازی دارن که صریحا کلمه abstract در تعریف اون متد ذکر شده باشه.
در واقعه همین متد ها هم الزامی به پیاده سازی ندارن. یعنی میشه در subclass هم به صورت abstract ذکر بشن. البته به شرطی که subclass هم به صورت abstract تعریف شده باشه.
در ضمن کلاس abstract میتونه متد های ساده یا غیر abstract هم داشته باشه. همونطور که میدونید متد های غیر abstract  باید بدنه داشته باشن و نیازی به پیاده سازی ندارن.
پس کلاس abstract هم میتونه متد هایی داشته باشه که باید پیاده سازی بشن هم متد هایی داشته باشه که لازم نباشه پیاده سازی بشن.

----------


## jafaripur

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


کلمه کلیدی Abstract برای کلاس برای جلوگیری از نمونه سازی هستش و فقط موقعی می شه ازش استفاده کرد که ازش ارث ببریم.
این فرمایش شما غلط می باشد که کلاس Abstract  توابعش بدنه ندارد !
کلاس های Interface توابعش بدنه ندارد و فقط تعریف می شود برای الزام به تعریف توابع موجود در کلاس Interface در کلاسی که Implement می کنیم از کلاس Interface.

----------


## jafaripur

> ممنون 
> حالا مسیله مهمتر اینه که این کار به چه دردی میخوره؟
> تو فروم جاوا رفتم یه چیزایی خوندم ولی خیلی مفهوم نبود برام
> ظاهرا مسیله خیلی مهم و پیچیده ای باید باشه قضیه ابسترکت و اینترفیس و وراثت چندگانه


به درد برنامه نویسی شی گرا و طراجی الگو.
برنامه نویسی که به صورت فله ای برنامه بنویسه, برنامه نویس نیست...!
و این تکنیک ها به جاوا ربطی ندارد و در همه زبان های برنامه نویسی سطح بالا مثل C#‎, PHP, ... مطرح هستش.
نوشتن برنامه های بزرگ و حرفه ای حساب و کتاب داره و بدون این گونه تکنیک ها نه اینکه طراحی نمی شود ولی به سختی طراحی می شود که در آینده هم به مشکل برخورد خواهد کرد بنا به دلایلی!

----------


## rubiks.kde

> این فرمایش شما غلط می باشد که کلاس Abstract توابعش بدنه ندارد !


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

----------


## jafaripur

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


 بله توابع به این صورت می باشد.

----------

