Avatar ·

كيفية تعريف كلاس عام في Kotlin يرث من كلاس وينفذ واجهة في نفس الوقت؟

مرحباً بالجميع! بدأت تعلم Kotlin بعد Java وواجهت موقفاً غير مفهوم. في Java يمكنني بسهولة كتابة كلاس عام يرث من كلاس أساسي وينفذ واجهة: ```java public class MyClass { // ... } ``` لكن عندما حاولت فعل الشيء نفسه في Kotlin، لم ينجح الأمر. إليك الكود الخاص بي: ```kotlin open class BaseClass interface MyInterface // المحاولة 1: لا يتم الترجمة class MyClass where T : BaseClass, T : MyInterface // المحاولة 2: لا تعمل أيضاً class MyClass // خطأ! ``` جربت خيارات مختلفة لكن المترجم يظهر أخطاء دائماً. أحتاج أن يكون النوع T وريثاً لـ BaseClass ومنفذاً لـ MyInterface في نفس الوقت. كيف يمكن فعل ذلك بشكل صحيح في Kotlin؟ شكراً مسبقاً على المساعدة! <<>>

الحل: استخدم الكلمة المفتاحية where للقيود المتعددة

في Kotlin، لتعريف كلاس عام بقيود متعددة، استخدم where:

```kotlin class MyClass where T : BaseClass, T : MyInterface ```

لاحظ أن where يجب أن يأتي بعد اسم الكلاس، وليس داخل الأقواس الزاوية. هذا هو النمط الصحيح في Kotlin.