🚀 کلاسهای انتزاعی در کاتلین: چرا و چطور؟
🔹 کلاس انتزاعی (Abstract Class) قالبی است که نمیتوان از آن شیء ساخت؛ فقط برای ارثبری طراحی شده.
🔹 در کاتلین با کلمه کلیدی
🔹 مثال واقعی: فرض کنید انواع روشهای پرداخت (کارت اعتباری، پیپال) دارید. یک کلاس انتزاعی «Payment» با یک متد «abstract» برای پردازش میسازید.
📝 نمونه کد ساده:
✅ هر کلاسی که از «Payment» ارث میبرد، باید متد «process» را پیادهسازی کند. متد «logTransaction» هم به صورت خودکار در دسترس است.
💡 با «abstract class» میتوانید الگوی «Template Method» را پیاده کنید و از تکرار کد جلوگیری کنید.
🔹 تفاوت با «interface»: کلاس انتزاعی میتواند «state» (متغیرهای غیرانتزاعی) داشته باشد.
#Codeit #Android #Kotlin #Jetpack #OOP #AbstractClass
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
🔹 کلاس انتزاعی (Abstract Class) قالبی است که نمیتوان از آن شیء ساخت؛ فقط برای ارثبری طراحی شده.
🔹 در کاتلین با کلمه کلیدی
abstract تعریف میشود و میتواند متدهای «abstract» (بدون پیادهسازی) و متدهای معمولی داشته باشد. 🔹 مثال واقعی: فرض کنید انواع روشهای پرداخت (کارت اعتباری، پیپال) دارید. یک کلاس انتزاعی «Payment» با یک متد «abstract» برای پردازش میسازید.
📝 نمونه کد ساده:
abstract class Payment {
abstract fun process(amount: Double)
fun logTransaction(amount: Double) {
println("Transaction logged: $amount")
}
}
class CreditCardPayment : Payment() {
override fun process(amount: Double) {
println("Processing $amount via Credit Card")
}
}
✅ هر کلاسی که از «Payment» ارث میبرد، باید متد «process» را پیادهسازی کند. متد «logTransaction» هم به صورت خودکار در دسترس است.
💡 با «abstract class» میتوانید الگوی «Template Method» را پیاده کنید و از تکرار کد جلوگیری کنید.
🔹 تفاوت با «interface»: کلاس انتزاعی میتواند «state» (متغیرهای غیرانتزاعی) داشته باشد.
#Codeit #Android #Kotlin #Jetpack #OOP #AbstractClass
🌐 Codeit → https://code-it.ir
━━━━━━━━━━━━━━━
@CodeitMobile
❤2👍1