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 |
|
Single |
|
Nessuna, implementa due interfacce |
|
Singola, implementa un'interfaccia |
|
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#)