Condividi tramite


class (Riferimenti per C#)

Per la dichiarazione delle classi viene utilizzata la parola chiave class, come illustrato nell'esempio seguente:

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

Note

Solo l'ereditarietà singola è consentita in c. In altre parole, una classe può ereditare l'implementazione da una sola classe base. Una classe è tuttavia in grado di implementare più di un'interfaccia. Nella tabella che segue sono illustrati esempi di ereditarietà di classe e di implementazione di interfaccia.

Ereditarietà

Esempio

Nessuno

class ClassA { }

Single

class DerivedClass: BaseClass { }

Nessuna, implementa due interfacce

class ImplClass: IFace1, IFace2 { }

Singola, implementa un'interfaccia

class ImplDerivedClass: BaseClass, IFace1 { }

Le classi dichiarate direttamente all'interno di uno spazio dei nomi, non annidate all'interno di altre classi, è possibile pubblico o interno. Le classi sono internal per impostazione predefinita.

I membri della classe, incluse le classi annidate, è possibile pubblico, protected internal, protetta, interno, o privato. I membri sono privato per impostazione predefinita.

Per ulteriori informazioni, vedere Modificatori di accesso (Guida per programmatori C#).

È possibile dichiarare le classi generiche con parametri di tipo. Per ulteriori informazioni, vedere Classi generiche.

Una classe può contenere dichiarazioni dei seguenti membri:

Esempio

Nell'esempio riportato di seguito viene illustrata la dichiarazione di costruttori, metodi e campi di classi. Viene inoltre descritta la creazione di istanze di oggetti e la stampa di dati di un'istanza. In questo esempio vengono dichiarate due classi, la classe Child, che contiene due campi privati (name e age) e due metodi pubblici. La seconda classe, StringTest, viene utilizzata per contenere 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.
*/

Commenti

Si noti, nell'esempio precedente, che è possibile accedere ai campi privati (name e age) solo tramite i metodi pubblici della classe Child. Non è quindi possibile stampare il nome del bambino dal metodo Main utilizzando un'istruzione come quella riportata di seguito.

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

L'accesso ai membri privati di Child da Main è possibile solo se Main è un membro della classe.

Tipi una classe interna dichiarata senza un'impostazione predefinita al modificatore di accesso a private, i membri dati in questo esempio rimane sempre private se la parola chiave è stata rimossa.

Si noti infine che per l'oggetto creato mediante il costruttore predefinito (child3), il campo dell'età è stato inizializzato su zero per impostazione predefinita.

Specifiche del linguaggio C#

Per altre informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.

Vedere anche

Riferimenti

Parole chiave di C#

Tipi di riferimento (Riferimenti per C#)

Concetti

Guida per programmatori C#

Altre risorse

Riferimenti per C#