klasse (C#-verwijzing)
Klassen worden gedeclareerd met behulp van het trefwoord class
, zoals wordt weergegeven in het volgende voorbeeld:
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}
Opmerkingen
Er is slechts één overname toegestaan in C#. Met andere woorden, een klasse kan alleen de implementatie overnemen van één basisklasse. Een klasse kan echter meer dan één interface implementeren. In de volgende tabel ziet u voorbeelden van de implementatie van klasseovername en interface:
Overname | Opmerking |
---|---|
Geen | class ClassA { } |
Eén | class DerivedClass : BaseClass { } |
Geen, implementeert twee interfaces | class ImplClass : IFace1, IFace2 { } |
Eén, implementeert één interface | class ImplDerivedClass : BaseClass, IFace1 { } |
Klassen die u rechtstreeks binnen een naamruimte declareert, niet genest binnen andere klassen, kunnen openbaar of intern zijn. Klassen zijn internal
standaard.
Klassenleden, waaronder geneste klassen, kunnen openbaar zijn, beveiligd intern, beveiligd, intern, privé of privé beveiligd. Leden zijn private
standaard.
Zie Toegangsmodifiers voor meer informatie.
U kunt algemene klassen declareren met typeparameters. Zie Algemene klassen voor meer informatie.
Een klasse kan declaraties van de volgende leden bevatten:
Opmerking
In het volgende voorbeeld ziet u hoe klassevelden, constructors en methoden worden gedeclareerd. Het toont ook objectexemplaren en het afdrukken van exemplaargegevens. In dit voorbeeld worden twee klassen gedeclareerd. De eerste klasse, Child
bevat twee privévelden (name
en age
), twee openbare constructors en één openbare methode. De tweede klasse, StringTest
wordt gebruikt om te bevatten 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.
*/
Opmerkingen
U ziet dat in het vorige voorbeeld de persoonlijke velden (name
en age
) alleen toegankelijk zijn via de openbare methode van de Child
klasse. U kunt bijvoorbeeld de naam van het kind niet afdrukken vanuit de Main
methode met behulp van een instructie als volgt:
Console.Write(child1.name); // Error
Het openen van privéleden van Child
waaruit Main
zou alleen mogelijk zijn als Main
ze lid zijn van de klasse.
Typen die in een klasse worden gedeclareerd zonder dat standaard een wijzigingsfunctie private
voor toegang is, zodat de gegevensleden in dit voorbeeld nog steeds zouden zijn private
als het trefwoord werd verwijderd.
Ten slotte ziet u dat voor het object dat is gemaakt met behulp van de parameterloze constructor (child3
), het age
veld standaard is geïnitialiseerd op nul.
C#-taalspecificatie
Zie de C#-taalspecificatie voor meer informatie. De taalspecificatie is de definitieve bron voor de C#-syntaxis en het gebruik.