C# Klassen: Blueprint für objektorientierte Programmierung
Klasse definieren
<Zugriff> class Klassenname
{
// Felder (Member-Variablen)
<Zugriff> <Typ> feld1;
<Zugriff> <Typ> feld2;
// Methoden
<Zugriff> <Rückgabetyp> Methode1(Parameter) { ... }
<Zugriff> <Rückgabetyp> Methode2(Parameter) { ... }
}
- Default-Zugriff für Klasse:
internal - Default-Zugriff für Member:
private - Zugriff auf Member über Punktsyntax:
obj.Member
Beispiel: Box-Klasse
public class Box
{
public double Length;
public double Breadth;
public double Height;
}
// Nutzung
Box box1 = new Box();
box1.Length = 6.0;
box1.Breadth = 7.0;
box1.Height = 5.0;
double volume = box1.Length * box1.Breadth * box1.Height;
Kapselung mit Properties & Methoden
Felder private, Zugriff über öffentliche Methods/Properties:
public class Box
{
private double length, breadth, height;
public void SetLength(double len) => length = len;
public void SetBreadth(double bre) => breadth = bre;
public void SetHeight(double hei) => height = hei;
public double GetVolume() => length * breadth * height;
}
Konstruktoren
Spezielle Methode zur Initialisierung beim Erzeugen (new). Name = Klassenname, kein Rückgabetyp.
Parameterloser Konstruktor
public class Line
{
private double length;
public Line() { Console.WriteLine("Objekt erstellt"); }
public void SetLength(double len) => length = len;
public double GetLength() => length;
}
Parameterisierter Konstruktor
public Line(double len)
{
Console.WriteLine($"Objekt erstellt, Länge = {len}");
length = len;
}
// Nutzung
Line line = new Line(10.0); // Länge direkt setzen
Destruktoren (Finalizer)
Wird vom Garbage Collector vor Freigabe des Speichers aufgerufen. Name: ~Klassenname, keine Parameter, kein Zugriffsmodifizierer.
~Line()
{
Console.WriteLine("Objekt wird gelöscht");
}
Hinweis: In modernem C# meist überflüssig; IDisposable / using für deterministische Ressourcenfreigabe bevorzugen.
Statische Member (static)
Gehören zur Klasse, nicht zur Instanz. Eine Kopie pro AppDomain.
Statische Felder
public class Counter
{
public static int Count = 0;
public void Increment() => Count++;
}
// Nutzung
Counter c1 = new Counter(); c1.Increment();
Counter c2 = new Counter(); c2.Increment();
Console.WriteLine(Counter.Count); // 2 (gemeinsam)
Statische Methoden
Können nur auf statische Member zugreifen. Aufruf über Klassennamen:
public static int GetCount() => Count;
// Aufruf
int cnt = Counter.GetCount();
C Sprache
- C# Klassen & Objekte: Fundamente für robustes OOP
- C# Zugriffsmodifizierer verstehen: Public, Private, Protected, Internal und mehr
- C# Static Keyword: Statische Variablen, Methoden und Klassen meistern
- C# Abstrakte Klassen & Methoden meistern: Praktischer Leitfaden
- C# Geschachtelte Klassen verstehen: Definition, Verwendung und Vererbung
- C++ Klassen & Objekte: Praktischer Leitfaden zur objektorientierten Programmierung
- C-Speicherklassen verstehen: Gültigkeitsbereich, Lebensdauer & Verwendung
- C++ Speicherklassen: Scope, Lifetime & Verwendung
- C++ Interfaces: Abstrakte Klassen & Pure Virtual Functions
- C# Programmstruktur verstehen: Kernkomponenten & Beispiel