class (مرجع #C)

يتم تعريف الفئات باستخدام الكلمة الأساسية class كما هو موضح في المثال التالي:

class TestClass
{
    // Methods, properties, fields, events, delegates 
    // and nested classes go here.
}

ملاحظات

على عكس ++C، في #C يسمح بالوراثة الفردية فقط. بمعنى آخر، ترث الفئة تطبيق من فئة أساسية أخرى واحدة فقط. ومع ذلك، يمكن للفئة تطبيق أكثر من واجهة. يعرض الجدول التالي أمثلة لتوريث الفئات وتطبيق الواجهات:

الوراثة

المثال

لا يوجد

class ClassA { }

مفرد

class DerivedClass: BaseClass { }

None ينفذ واجهتين

class ImplClass: IFace1, IFace2 { }

Single ينفذ واجهة واحدة

class ImplDerivedClass: BaseClass, IFace1 { }

مستويات الوصول protected و private يُسمح لها فقط في الفئات المتداخلة.

يمكنك أيضاً تعريف فئات عامة ذات معلمات نوعية; راجع الفئات العامة لمعلومات أكثر.

يمكن للفئة أن تتضمن تصريحات للأعضاء التالية:

مثال

يوضح المثال التالي تصريح حقول الفئة والدوال الإنشائية والأساليب. كما يوضح أيضاً إنشاء مثيل لكائن وطباعة بيانات المثيل. في هذا المثال، يتم التصريح عن فئتين، فئة Child التي تحتوي على حقلين خاصين (name و age) وأسلوبين عامين. الفئة الثانية, StringTest، تحتوي على Main.

    class Child
    {
        private int age;
        private string name;

        // Default constructor:
        public Child()
        {
            name = "N/A";
        }

        // Constructor:
        public Child(string name, int age)
        {
            this.name = name;
            this.age = age;
        }

        // Printing method:
        public void PrintChild()
        {
            Console.WriteLine("{0}, {1} years old.", name, age);
        }
    }

    class StringTest
    {
        static void Main()
        {
            // Create objects by using the new operator:
            Child child1 = new Child("Craig", 11);
            Child child2 = new Child("Sally", 10);

            // Create an object using the default constructor:
            Child child3 = new Child();

            // Display results:
            Console.Write("Child #1: ");
            child1.PrintChild();
            Console.Write("Child #2: ");
            child2.PrintChild();
            Console.Write("Child #3: ");
            child3.PrintChild();
        }
    }
    /* Output:
        Child #1: Craig, 11 years old.
        Child #2: Sally, 10 years old.
        Child #3: N/A, 0 years old.
    */

التعليقات

لاحظ, في المثال السابق، أن الحقول الخاصة (name و age) يمكن الوصول إليها عبر الأساليب العامة فقط من فئة Child. على سبيل المثال، لا يمكنك طباعة اسم الطفل من الأسلوب Main، باستخدام عبارة كما يلي:

Console.Write(child1.name);   // Error

الوصول إلى الأعضاء الخاصة لـChild من Main يكون ممكناً إذا كانت Main أحد أعضاء الفئة.

الأنواع المعرفة داخل الفئة بدون أداة تعديل الوصول ستكون بشكل افتراضي private، لذلك أعضاء البيانات في هذا المثال لا تزال private إذا تمت إزالة الكلمة الأساسية.

وأخيراً، لاحظ أن الكائن الذي تم إنشاؤه باستخدام الدالة الإنشائية الإفتراضية (child3)، تمت تهيئة حقل العمر (age) بصفر بشكل افتراضي.

مواصفات لغة #C

لمزيد من المعلومات، راجع مواصفات لغة #C. مواصفات اللغة هي المصدر النهائي لبناء جملة C# واستخدامها.

راجع أيضًا:

المرجع

الكلمات الأساسية لـ #C

مرجع أنواع (C# مرجع)

المبادئ

دليل البرمجة لـ #C

موارد أخرى

مرجع C#‎