osztály (C# referencia)
Az osztályok a kulcsszó class
használatával vannak deklarálva, ahogyan az a következő példában is látható:
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}
Megjegyzések
A C#-ban csak egyetlen öröklés engedélyezett. Más szóval egy osztály csak egy alaposztálytól örökölheti a megvalósítást. Az osztály azonban több felületet is képes implementálni. Az alábbi táblázat példákat mutat be az osztályöröklésre és a felület implementálására:
Öröklődés | Példa |
---|---|
Egyik sem | class ClassA { } |
Egyszeres | class DerivedClass : BaseClass { } |
Nincs, két felületet implementál | class ImplClass : IFace1, IFace2 { } |
Egyetlen, egyetlen felületet implementál | class ImplDerivedClass : BaseClass, IFace1 { } |
Azok az osztályok, amelyeket közvetlenül egy névtéren belül deklarál, nem más osztályokba ágyazva, lehetnek nyilvánosak vagy belsőek. Az osztályok alapértelmezés szerint.internal
Az osztálytagok, beleértve a beágyazott osztályokat is, lehetnek nyilvánosak, védettek belső, védett, belső, privát vagy privát védelem alatt. A tagok alapértelmezés szerint.private
További információ: Access Modifiers.
A típusparaméterekkel rendelkező általános osztályok deklarálhatók. További információ: Általános osztályok.
Az osztály a következő tagok deklarációit tartalmazhatja:
Példa
Az alábbi példa az osztálymezők, konstruktorok és metódusok deklarálását mutatja be. Emellett bemutatja az objektumpéldány-példányok és a példányadatok nyomtatását is. Ebben a példában két osztály van deklarálva. Az első osztály Child
két privát mezőt (name
és), két nyilvános konstruktort és age
egy nyilvános metódust tartalmaz. A második osztály a StringTest
következőt tartalmazza 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.
*/
Megjegyzések
Figyelje meg, hogy az előző példában a privát mezők (name
és age
) csak az osztály nyilvános metódusával Child
érhetők el. Például nem nyomtathatja ki a gyermek nevét a Main
metódusból az alábbihoz hasonló utasítással:
Console.Write(child1.name); // Error
A privát tagok Child
Main
elérése csak akkor lehetséges, ha Main
az osztály tagja lenne.
Az osztályon belül a hozzáférési módosító alapértelmezés private
szerint nem deklarált típusok, így a példában szereplő adattagok továbbra is a kulcsszó eltávolítása esetén lennének private
.
Végül figyelje meg, hogy a paraméter nélküli konstruktor (child3
) használatával létrehozott objektum esetében a age
mező alapértelmezés szerint nullára lett inicializálva.
C# nyelvspecifikáció
További információkért lásd a C# nyelvi specifikációját. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.