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

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

Nessuno

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 nidificate.

È 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 Kid, che contiene due campi privati (name e age) e due metodi pubblici. La seconda classe, MainClass, viene utilizzata per contenere Main.

// keyword_class.cs
// class example
using System;
class Kid
{
    private int age;
    private string name;

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

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

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

class MainClass
{
    static void Main()
    {
        // Create objects
        // Objects must be created using the new operator:
        Kid kid1 = new Kid("Craig", 11);
        Kid kid2 = new Kid("Sally", 10);

        // Create an object using the default constructor:
        Kid kid3 = new Kid();

        // Display results:
        Console.Write("Kid #1: ");
        kid1.PrintKid();
        Console.Write("Kid #2: ");
        kid2.PrintKid();
        Console.Write("Kid #3: ");
        kid3.PrintKid();
    }
}

Output

Kid #1: Craig, 11 years old.
Kid #2: Sally, 10 years old.
Kid #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 Kid. Non è ad esempio possibile stampare il nome del bambino, dal metodo Main, utilizzando un'istruzione come illustrato di seguito:

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

L'accesso ai membri privati di Kid 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 (kid3), il campo dell'età è stato inizializzato su zero per impostazione predefinita.

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere le sezioni riportate di seguito in Specifiche del linguaggio C#:

  • 1.6 Classi e oggetti

  • 3.4.4 Membri delle classi

  • 4.2.1 Tipi classe

  • 10 Classi

Vedere anche

Riferimenti

Parole chiave di C#
Tipi di riferimento (Riferimenti per C#)

Concetti

Guida per programmatori C#

Altre risorse

Riferimenti per C#