Share via


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, Childbevat twee privévelden (name en age), twee openbare constructors en één openbare methode. De tweede klasse, StringTestwordt 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 privatevoor 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.

Zie ook