در ابتدا به تعریف مفهوم Abstract یا انتزاعی میپردازیم :

انتزاعی به معنی چیزی است که فقط در ذهن ماست و وجود خارجی ندارد و وابسته به چیز دیگری نیست ..

برای مثال مفهوم درخت انتزاعی میباشد زیر وابسته به هیچ نوع خاصی از درخت نیست و ما اگر از واژه درخت استفاده کنیم هرکسی در ذهن خودش یک درخت را تجسم میکند

درخت سیب یک نمونه از درخت است که وجود خارجی دارد.

 

برای مثال آرایه یک مفهوم انتزاعی است زیرا وابسته به نوع داده ای خاصی مثل Int , String , Double نیست 

 

کلاسهای Abstract : 

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

کلاسهای Abstract میتوان هر دو نوع توابع معمولی و Abstract را داشته باشند .

بر خلاف Inreface که باید همه توابع آن را در کلاسهای والد تعریف کرد ، در کلاسهای Abstract لزومی به تعریف متدهای غیر Abstract در کلاسهای والد وجود ندارد .

همچنین متدهایی که به صورت انتزاعی تعریف میشوند بدنه ندارند و فقط میتوان در سطح کلاسهای والد برای آنها بدنه تعریف کرد .

شما فقط یک بار میتونید از یک کلاس ارث بری کنید ولی N تا Interface را میتونید پیاده سازی کنید.