English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在本文中,将向您介绍Kotlin中的面向对象编程。您将学习什么是类,如何创建对象以及如何在程序中使用它。
Kotlin支持函数和面向对象的编程。
Kotlin支持诸如高阶函数،函数类型 و lambda之类的函数,这使其成为使用函数式编程风格的理想选择。您将在后面的章节中了解这些概念。本文将重点介绍Kotlin中的面向对象编程风格。
在面向对象的编程风格中,可以通过创建对象将复杂的问题分为较小的集合。
这些对象具有两个特征:
状态
行为
让我们举几个实例:
Lamp(灯) 是一个对象
它可以处于 on(亮着) 或 off(熄灭) 状态。
يمكنك تشغيل (تشغيل الضوء) و turn off (إطفاء الضوء) (سلوكيات).
Bicycle هو كائن
لديها��态 مثل السرعة، العجلات، عدد الأسلاك.
لديها سلوكيات مثل الفرامل، التسارع، التغيير.
ستتعلم المزيد عن الميزات المفصلة للبرمجة الموجهة بالكائنات، مثل:التجميع البياني،التراث و التصنيف. سيعتمد هذا المقال على الأساسيات التي تجعل الأمور بسيطة.
قبل إنشاء كائن في Kotlin، تحتاج إلى تعريف الفئة.
الفئة هي مخطط الكائن.
يمكننا رؤية الفئة كرسومات المنازل (المخططات). تحتوي على جميع التفاصيل المتعلقة بالأرضيات، الأبواب، النوافذ، إلخ. بناءً على هذه التوصيفات، نبنى المنازل. المنزل هو كائن.
بما أن يمكن بناء العديد من المنازل باستخدام نفس الوصف، يمكننا إنشاء العديد من الكائنات بناءً على الفئة.
لتحديد فئة في Kotlin، يمكنك استخدام كلمة المفتاح class:
class ClassName { // الخاصيات // وظيفة العضو ... .. ... }
هذه هي مثال:
class Lamp { // الخاصيات (الأسماء المتغيرة) private var isOn: Boolean = false // وظيفة العضو fun turnOn() { isOn = true } // وظيفة العضو fun turnOff() { isOn = false } }
في هذا، نحدد فئة تُدعى Lamp.
لديها خاصية isOn (تعريفها مشابه للاسمة المتغيرة) واثنين من الدوال الأعضاء turnOn() و turnOff().
في Kotlin، يجب إما تحديد الخاصية مباشرة، أو يجب أن تكون معلنة ك abstract. في المثال أعلاه، تم تحديد الخاصية isOn على أنها false.
يمكن أن يكون للفئات، الكائنات، الخاصيات، الدوال الأعضاء، إلخ ميزات وصول. على سبيل المثال، الخاصية isOn خاصة. هذا يعني أنه يمكن تغيير الخاصية isOn فقط داخل الفئة Lamp.
هناك ميزات وصول أخرى هي:
private - مرئية فقط داخل الفئة (يمكن الوصول إليها).
public - مرئية في كل مكان.
protected - مرئية للفئة وفرعها.
internal - يمكن الوصول إليها من أي عميل داخل النمط.
ستتعرف علىميزات الوصول في Kotlinتعرف على محددين protected و internal في المقال.
إذا لم يتم تحديد ميزة الوصول، فإن القيمة الافتراضية هي public.
في البرنامج أعلاه، تكون دالة turnOn() و turnOff() أعضاء عامة، بينما تكون الخاصية isOn خاصة.
عند تعريف الفئة، يتم تعريف معيار الكائن فقط؛ لا يتم تخصيص ذاكرة أو مساحة التخزين.
للوصول إلى الأعضاء المحددة في الفئة، تحتاج إلى إنشاء كائن. دعنا نخلق كائنًا من الفئة Lamp.
class Lamp { // الخاصية (المعلمات) private var isOn: Boolean = false // وظيفة العضو fun turnOn() { isOn = true } // وظيفة العضو fun turnOff() { isOn = false } } fun main(args: Array<String>) { val l1 = Lamp() // إنشاء كائن l1 من الفئة Lamp val l2 = Lamp() // إنشاء كائن l2 من الفئة Lamp }
هذا البرنامج يخلق اثنين من الكائنات l1 و l2 من الفئة Lamp. أداء الضوء على كائنات l1 و l2 هو l1 و l2 سيكونا غير معتمدين.
يمكنك استخدام الرمز . للاستعلام عن الخاصيات والوظائف الأعضاء للفئة. على سبيل المثال،
l1.turnOn()
هذه الجملة تستدعي دالة turnOn() لكائن l1.
دعونا نأخذ مثالاً آخر:
l2.isOn = true
في هذا المكان، نحاول تخصيص true الخاصية isOn لكائن l2. لاحظ أن الخاصية isOn هي private، إذا حاولت الوصول إلى isOn من الخارج، سيتم إطلاق استثناء.
class Lamp { // الخاصية (المعلمات) private var isOn: Boolean = false // وظيفة العضو fun turnOn() { isOn = true } // وظيفة العضو fun turnOff() { isOn = false } fun displayLightStatus(lamp: String) { if (isOn == true) println("$lamp ضوء متوهج.") else println("$lamp ضوء معطوب.") } } fun main(args: Array<String>) { val l1 = Lamp() // إنشاء كائن l1 من الفئة Lamp val l2 = Lamp() // إنشاء كائن l2 من الفئة Lamp l1.turnOn() l2.turnOff() l1.displayLightStatus("l1") l2.displayLightStatus("l2") }
عند تشغيل هذا البرنامج، الناتج هو:
الضوء l1 متوهج. الضوء l2 معطوب.
في البرنامج أعلاه،
تم إنشاء فئة Lamp.
للفئة Lamp الخاصية isOn وثلاث دوال member: turnOn()، turnOff() و displayLightStatus().
تم إنشاء كائنين من فئة Lamp في دالة main().
في هذا المكان، استخدم كائن l1: l1.turnOn() لدعوة دالة turnOn(). هذا الأسلوب سيقوم بتعيين متغير isOn المثبت في كائن l1 إلى true.
في نفس الوقت، استخدم كائن l2: l2.turnOff() لدعوة دالة turnOff(). هذا الأسلوب سيقوم بتعيين متغير isOff المثبت في كائن l2 إلى false.
ثم، استدعي دالة displayLightStatus() للوحة l1 و l2، التي طبعت الرسالة المناسبة بناءً على ما إذا كانت الخاصية isOn صحيحة أم خطأ.
لاحظ، في الداخل الكائن، الخاصية isOn تم تعيينها إلى false. عند إنشاء كائن من هذا الكائن، الخاصية isOn للكائن سيتم تعيينها تلقائيًا إلى false. لذلك، لا تحتاج إلى أن يستدعي كائن l2 الدالة turnOff() لتعيين الخاصية isOn إلى false.
مثلاً:
class Lamp { // الخاصية (المعلمات) private var isOn: Boolean = false // وظيفة العضو fun turnOn() { isOn = true } // وظيفة العضو fun turnOff() { isOn = false } fun displayLightStatus() { if (isOn == true) println("النور مضيء.") else println("النور قد انطفأ.") } } fun main(args: Array<String>) { val lamp = Lamp() lamp.displayLightStatus() }
عند تشغيل هذا البرنامج، الناتج هو:
النور قد انطفأ.
هذا المقال هو معرفة أساسية عن برمجة الكائنات في Kotlin.