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

A differenza di C++, in C# è consentita solo l'ereditarietà singola. 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

Nessuna correzione

class ClassA { }

Single

class DerivedClass: BaseClass { }

Nessuna, implementa due interfacce

class ImplClass: IFace1, IFace2 { }

Singola, implementa un'interfaccia

class ImplDerivedClass: BaseClass, IFace1 { }

I livelli di accesso protected e private sono consentiti unicamente per classi annidate.

È inoltre possibile dichiarare classi generiche che dispongono di 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.

I tipi dichiarati all'interno di una classe senza un modificatore di accesso per impostazione predefinita vengono impostati su private, quindi i membri dati di questo esempio sarebbero comunque private anche se la parola chiave venisse 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 ulteriori informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio è la fonte ufficiale per la sintassi e l'utilizzo 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#