آموزش دونه:مرجع آموزش

کلاس های انتزاعی در کاتلین (Kotlin abstract classes) آموزش برنامه نویسی کاتلین kotlin

کلاس های انتزاعی

kotlin abstract Classes

همانند جاوا، کاتلین نیز کلیدواژه abstract را برای تعریف کلاس‌های انتزاعی در اختیار ما قرار داده است. یک کلاس Abstract (به فارسی: انتزاعی) قابل نمونه‌سازی نیست؛ یعنی نمی‌توانید شی‌ای از روی این کلاس‌ها بسازید، با این حال امکان ساخت زیرکلاسی از آن‌ها وجود دارد. اعضای یک کلاس انتزاعی (پراپرتی‌ها و متدها)، انتزاعی نیستند مگر به صراحت با کلیدواژه abstract انتراعی بودنشان را اعلام کنیم.

مثال:

در این کد:

  • کلاس Person انتراعی تعریف شده است؛ یعنی نمی‌توانید از روی آن نمونه‌سازی کنید؛
  • این کلاس یک پراپرتی غیرانتزاعی تحت عنوان age و متدی غیرانتزاعی با نام ()displaySSN دارد. اگر تحت شرایطی نیازمند Override کردن این دو عضو در زیرکلاس دیگری باشید. بایستی حتماً کلیدواژه open در ابتدای نسخۀ سربارگذاری شده قرار گیرد؛
  • همچنین متدی انتزاعی تحت عنوان ()displayJob نیز وجود دارد که هیچ پیاده‌سازی نداشته و بایستی در زیرکلاس‌ها پیاده‌سازی شود.

توجه: کلاس‌های انتزاعی همیشه open هستند، بنابراین ارث‌بری از آن‌ها نیازمند کلیدواژه open نیست.

مثالی از کلاس‌ها و متدهای Abstract در کاتلین

خروجی:

در اینجا کلاس Teacher از کلاس انتزاعی Person مشتق و شی jack از کلاس Teacher نمونه‌سازی شده است. سپس عبارت Jack Smith به عنوان پارامتری به سازنده اولیه ارسال شده است. این کار باعث اجرای بلاک initializer کلاس Person می‌شود. در ادامه متد ()displayJob بر روی شی jack فرخوانی می‌شود. این متد انتزاعی و متعلق به کلاس پایه بوده، بنابراین در نسخه Override شده در زیرکلاس Teacher پیاده‌سازی شده است. نهایتاً متد ()displaySSN روی شی jack فرخوانی شده است. این متد غیرانتزاعی و متعلق به کلاس Person است.

kotlin abstract Classes kotlin abstract Classes kotlin abstract Classes kotlin abstract Classes kotlin abstract Classes kotlin abstract Classes kotlin abstract Classes kotlin abstract Classes kotlin abstract Classes kotlin abstract Classes kotlin abstract Classes 

مطالب مرتبط