سنتحدث في هذا القسم عن نظرة عامة على الفئات
لقد قلنا دائمًا أن لغة C# هي برمجة موجهة للكائنات، وقد تعلمنا سابقًا أن كل كائن يجب أن ينتمي إلى فئة ما. تم تعريف العديد من الفئات في .net، ولكن في البرمجة الفعلية يجب علينا أيضًا تخصيص بعض الفئات للبرنامج.
كافة الفئات في C# ترث بشكل مباشر أو غير مباشر من فئة System.Object، والتي تسمح للفئات في C# أن ترث من جذر واحد. إذا لم نحدد فئة موروثة بشكل صريح، فسيعتقد المترجم افتراضيًا أن الفئة ترث من فئة System.Object. يمكن أيضًا تمثيل فئة System.Object بواسطة الكلمة الأساسية للكائنات الصغيرة،
وعلى وجه الدقة، هناك ثلاثة مكونات رئيسية للفئة، وبالطبع لن نخوض في التفاصيل هنا سأقدم درسًا تفصيليًا لاحقًا عندما أتعلم المزيد، فلنتحدث عنها لاحقًا!
1. السمات: كما قلنا سابقًا، يتم استخدام أساليب الوصول، بحيث تكون قابلة للقراءة فقط أو قابلة للقراءة والكتابة 2.
الأساليب: تسمح لك الأساليب باستخدام الكائنات لتنفيذ عملية ما، ويمكن أن تتفاعل فعليًا مع كائنات أخرى من خلال إعدادات الخاصية، ولكن يمكن للطرق إكمال بعض العمليات المركبة.
3. الأحداث: لقد تحدثنا للتو عن الأحداث في الفصل الأخير ويمكنها القيام بأشياء مماثلة عند تشغيلها.
أخيرًا، عندما نحدد الفصل بالكامل، يمكننا تغليفه. عند استخدامه، لا نهتم بكيفية إكمال المهمة، نحتاج فقط إلى معرفة الواجهات العامة التي يمتلكها، وما هي خصائصه، وما هي الأساليب والأحداث التي يمتلكها. ويطلق عليهم بشكل جماعي أعضاء الفصل.
كما قلنا من قبل، يمكننا استخدام الفئات لإنشاء كائنات N، لكنها كلها معزولة، فهل هناك أي طريقة يمكننا من خلالها مشاركة الكائنات بين فئتين محددتين؟
دعونا نصل إلى هذه النقطة. يمكننا تحديد سلسلة من الأساليب أو السمات وتطبيقها على الفصل ككل بدلاً من استخدامها بشكل خاص على كائنات من فئة معينة، وهم ما نسميه الأعضاء المشتركين (الأعضاء الثابتة). على سبيل المثال، إذا أردنا معرفة عدد الكتب التي تم نشرها، نستخدم خاصية عدد السمات المشتركة، أو لضبط أسعار جميع الكتب، نستخدم الطريقة المشتركة modemon()، والتي يمكن أن تعطي خصمًا بنسبة 20٪ للجميع كتب.
تحتوي الفئة على بعض المتغيرات، ويتم تضمين بيانات هذه المتغيرات في متغيرات الأعضاء (المتغيرات الخاصة التي ذكرناها كثيرًا سابقًا)، كما تحتوي على بعض رموز التشغيل، ويتم تضمين هذه الرموز في وظائف الأعضاء أيضًا في الممارسة العملية، نقدم فقط خصائصه وأساليبه وأحداثه وواجهاته الأخرى، ويكون جزء البيانات مخفيًا أو مغلفًا.
تسمى متغيرات الأعضاء ووظائف الأعضاء بشكل جماعي أعضاء الفئة. وهي مقسمة إلى أعضاء ثابتين وكيانيين.
دعونا نلقي نظرة على مثال أدناه
سلسلة ثابتة عامة aaa -------- متغير العضو الثابت
public static void aaa() -------- وظيفة العضو الثابتة
{
}
سلسلة عامة aaa ------------- متغير عضو الكيان
public void aaa() ------------- وظيفة عضو الكيان
{
}
لاحظ أنه تم استخدام الكلمة الأساسية الثابتة
فيما سبق. عند استخدام متغيرات الأعضاء الثابتة، يمكنك استخدام عضو الكيان مباشرة
دون الإعلان عن الكائن. يجب عليك أولاً الإعلان عن كيانالكائن
قبل استخدامه.
سيتم إنشاؤه في الكومة المُدارة. يسمى النوع الذي تم إنشاء مثيل له بالكائن، وتتمثل ميزته الأساسية في أنه يحتوي على نسخته الخاصة من أعضاء البيانات. يُطلق على أعضاء البيانات الذين تحتفظ بهم كائنات معينة اسم أعضاء المثيلات. على العكس من ذلك، يُطلق على أعضاء البيانات الذين لا تحتفظ بهم كائنات معينة اسم الأعضاء الثابتة ويتم الإعلان عنهم باستخدام المُعدِّل الثابت في الفصل. تلك التي تنفذ العمليات فقط على أعضاء البيانات الثابتة تسمى أعضاء الوظائف الثابتة.
هناك أيضًا فراغ: ما يتم إرجاعه بعد تنفيذ طريقة أو وظيفة عامة يمكن أن يكون من أي نوع، مثل int أو string. إذا كنت تريد كتابة طريقة لا تُرجع قيمة، فيجب عليك استخدام الكلمة الأساسية void بدلاً من نوع الإرجاع.
لذلك لا بد أننا لاحظنا كلمة public أعلاه في الواقع، لها ثلاثة أخوة: خاصمحميداخلي ويطلق عليهم اسم معدّلات الوصول، والتي تستخدم للتحكم في العمليات الخارجية على أعضاء الفصل لتحقيق غرض إخفاء البيانات.
أدناه سنشرح كل واحد
عام: يمكن لأي فئة خارجية الوصول إلى بيانات الفئة دون قيود.
خاص: تقييد الاستخدام الداخلي لهذه الفئة
المحمية: بالإضافة إلى الفئة نفسها، يمكن لأي فئة ترث هذه الفئة استخدام
داخلي: يعني أنه يمكن استخدامها في نفس التطبيق (Application) أو مكتبة الفئة (Library)، ولكن وهذا ما لا نحتاجه في الأساس.
http://www.cnblogs.com/thcjp/archive/2006/09/15/505022.html