English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المقال، ستتعلم الأنواع التجريدية وكيفية تنفيذها في Kotlin (باستخدام الأمثلة).
مثل Java، تستخدم كلمة المفتاح abstract لتعريف الفئات التجريبية في Kotlin. لا يمكنك إنشاء كائن من الفئة التجريبية (لا يمكنك إنشاء كائن من الفئة التجريبية). ولكن يمكنك النسخ منها فئات الفرعية.
مثل Java، تستخدم كلمة المفتاح abstract لتعريف الفئات التجريبية في Kotlin. لا يمكنك إنشاء كائن من الفئة التجريبية (لا يمكنك إنشاء كائن من الفئة التجريبية). ولكن يمكنك النسخ منها فئات الفرعية.
abstract class Person { var age: Int = 40 fun displaySSN(ssn: Int) { println("رقم التأمين الاجتماعي الخاص بي هو: $ssn.") } abstract fun displayJob(description: String) }
في هذا السياق،
أنشئ فئة التجريبية Person. لا يمكنك إنشاء كائن من هذه الفئة.
تملك هذه الفئة خصائص غير تجريبية مثل age وطرق غير تجريبية displaySSN(). إذا كنت بحاجة إلى تغيير هذه العضوية في فئة الفرعية، يجب أن يتم تسميتها باستخدام كلمة المفتاح open.
تملك هذه الفئة طريقة تجريبية displayJob() ليست لها أي تنفيذ، يجب أن يتم تعديلها في فئة الفرعية.
ملاحظة:الفئات التجريبية دائمًا مفتوحة. لا تحتاج إلى استخدام كلمة المفتاح open بشكل صريح للتنسيق منها فئات الفرعية.
abstract class Person(name: String) { init { println("اسمي هو $name.") } fun displaySSN(ssn: Int) { println("رقم التأمين الاجتماعي الخاص بي هو $ssn.") } abstract fun displayJob(description: String) } class Teacher(name: String): Person(name) { override fun displayJob(description: String) { println(description) } } fun main(args: Array<String>) { val jack = Teacher("Jack Smith") jack.displayJob("أنا معلم رياضيات.") jack.displaySSN(23123) }
عند تشغيل هذا البرنامج، الناتج سيكون:
اسمي هو Jack Smith. أنا معلم رياضيات. رقم التأمين الاجتماعي الخاص بي هو 23123.
في هذا السياق، تُدرج فئة Teacher من الفئة التجريبية Person
تم إنشاء عنصر Teacher الم对象 jack. عند إنشاء الكائن في الماكينة البدائية، نحن نمرر له المعامل "Jack Smith". هذا سيقوم بتنفيذ المبادئ التوجيهية للفئة Person.
ثم، استخدم جسم Jack لندعو عملية displayJob(). يرجى ملاحظة أن عملية displayJob() تم إعلانها كتعريفة في الصفحة الأصلية وتم تغطيتها في الصفحة الفرعية.
في النهاية، استخدم جسم Jack لندعو عملية displaySSN(). هذه العملية ليست تعريفة، تم إعلانها في صفحة Person (بدلاً من إعلانها في صفحة Teacher).
معرفة ذات صلة: الصفحة المعددية في Kotlin
الصفحة المعددية تشبه الصفحة الابسترة. ولكن، لا يمكن للصفحة المعددية حفظ الحالة، بينما يمكن للصفحة الابسترة القيام بذلك.
بمعنى آخر، قد تكون الصفحة معينة لديها خصائص، ولكن يجب أن تكون تعريفة أو يجب أن تقدم تنفيذ الوصول. ومع ذلك، ليست خصائص الصفحة الابسترة يجب أن تكون تعريفة.