الحقل الـ Field
مجرد متغير يرجع للفئة نفسها (Member Variable) التي تم تعريفه فيها. يحمل قيمة في داخله (Value). نستطيع تغيير قيمته (Mutable) أو جعله للقراءة (Immutable) فقط. وكذلك نستطيع جعله عام أو خاص (Public or Private).
#جافا
مجرد متغير يرجع للفئة نفسها (Member Variable) التي تم تعريفه فيها. يحمل قيمة في داخله (Value). نستطيع تغيير قيمته (Mutable) أو جعله للقراءة (Immutable) فقط. وكذلك نستطيع جعله عام أو خاص (Public or Private).
#جافا
الخاصية الـ Property
أكثر تعقيداً في تركيبها من الحقل Field. بحيث أنها تتكون من حقل خاص ودوال Getter و Setter.
فعندما ننشئها للقراءة والكتابة (Mutable) فإنها تملكهم جميعاً الـ Field و Getter و Setter. أما إذا كان للقراءة (Immutable) فإنها تملك فقط الـ Field والـ Getter.
#كوتلن
أكثر تعقيداً في تركيبها من الحقل Field. بحيث أنها تتكون من حقل خاص ودوال Getter و Setter.
فعندما ننشئها للقراءة والكتابة (Mutable) فإنها تملكهم جميعاً الـ Field و Getter و Setter. أما إذا كان للقراءة (Immutable) فإنها تملك فقط الـ Field والـ Getter.
#كوتلن
أنماط التعامل مع الخواص Properties
عندما نتعامل مع الـ Property في لغة الكوتلن سنحتاج الى نمطين وهما:
- الـ Backing Field والذي يسمح لنا بالوصول للحقل في نطاق الـ Getter و Setter.
- الـ Backing Property الذي يسمح لنا للوصول للحقل بشكل مباشر.
#كوتلن
عندما نتعامل مع الـ Property في لغة الكوتلن سنحتاج الى نمطين وهما:
- الـ Backing Field والذي يسمح لنا بالوصول للحقل في نطاق الـ Getter و Setter.
- الـ Backing Property الذي يسمح لنا للوصول للحقل بشكل مباشر.
#كوتلن
الـ Backing Field
يفيد هذا النمط في الوصول الى حقل الخاصية في نطاق دوال الـ Getter و الـ Setter والتعديل على المنطق الخاص به.
لاحظ اننا لا نقوم بالإشارة الى الحقل بأسمه حتى لا يحدث رجعية في النداء له (Recursive Invoking) مما يسبب رمي الخطأ StackOverflowError.
#كوتلن
يفيد هذا النمط في الوصول الى حقل الخاصية في نطاق دوال الـ Getter و الـ Setter والتعديل على المنطق الخاص به.
لاحظ اننا لا نقوم بالإشارة الى الحقل بأسمه حتى لا يحدث رجعية في النداء له (Recursive Invoking) مما يسبب رمي الخطأ StackOverflowError.
#كوتلن
الـ Backing properties
يفيد هذا النمط في الوصول لحقل الخاصية (وليس للـ Getter الخاص بها) من داخل الفئة Class نفسها. وذلك من خلال إنشاء عنصر آخر يحمل نفس الاسم ولكنه يبدأ بعلامة Underscore ويكون بشكل خاص Private.
#كوتلن
يفيد هذا النمط في الوصول لحقل الخاصية (وليس للـ Getter الخاص بها) من داخل الفئة Class نفسها. وذلك من خلال إنشاء عنصر آخر يحمل نفس الاسم ولكنه يبدأ بعلامة Underscore ويكون بشكل خاص Private.
#كوتلن
جاري تحميل الاقتراحات...