class (odwołanie w C#)
Klasy zadeklarowane za pomocą słowa kluczowego class, jak pokazano w poniższym przykładzie:
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}
Uwagi
Tylko pojedynczego dziedziczenia jest dozwolony w C#.Innymi słowy klasa może odziedziczyć wykonania tylko jedną klasę bazową.Jednakże klasy można zaimplementować więcej niż jeden interfejs.W poniższej tabeli przedstawiono przykłady dziedziczenie klas i implementacji interfejsu:
Dziedziczenie |
Przykład |
---|---|
Brak |
class ClassA { } |
Pojedyncze |
class DerivedClass: BaseClass { } |
Brak, implementuje dwa interfejsy |
class ImplClass: IFace1, IFace2 { } |
Pojedyncze, implementuje jeden interfejs |
class ImplDerivedClass: BaseClass, IFace1 { } |
Klasy, które zadeklarować bezpośrednio w obszarze nazw, nie są zagnieżdżone w innych klas, mogą być publicznych lub wewnętrzny.Klasy są internal domyślnie.
Członków klasy, w tym klas zagnieżdżonych, może być publicznych, protected internal, chronione, wewnętrzny, lub prywatne.Członkowie są prywatne domyślnie.
Aby uzyskać więcej informacji, zobacz Modyfikatory dostępu (Przewodnik programowania w języku C#).
Można zadeklarować klas rodzajowych, które mają parametry typu.Aby uzyskać więcej informacji, zobacz Klas rodzajowych.
Klasa może zawierać deklaracje następujące elementy:
Przykład
Poniższy przykład ilustruje deklarujący klasy pola, konstruktorów i metod.Ilustruje też podczas tworzenia wystąpienia obiektu i drukowanie danych wystąpienia.W tym przykładzie dwie klasy są zadeklarowane, Child klasy, która zawiera dwa pola prywatne (name i age) i dwie metody publiczne.Do drugiej klasy StringTest, zawiera 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.
*/
Komentarze
Zawiadomienia w powyższym przykładzie, że pola private (name i age) mogą być dostępne za pośrednictwem metody publiczne z Child klasy.Na przykład, nie można drukować nazwę dziecka, z Main metodę, za pomocą instrukcji w następujący sposób:
Console.Write(child1.name); // Error
Uzyskiwanie dostępu do prywatnych elementów członkowskich z Child z Main jest możliwa tylko jeśli Main były członkami tej klasy.
Typy zadeklarowane wewnątrz klasy bez domyślnego modyfikator dostępu do private, więc nadal będzie elementów członkowskich danych, w tym przykładzie private Jeśli usunięto słowo kluczowe.
Warto zauważyć, że dla obiektów utworzonych przy użyciu konstruktora domyślnego (child3), wiek, pole zostało zainicjowane do zera, domyślna.
Specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.
Zobacz też
Informacje
Koncepcje
Przewodnik programowania w języku C#