C# Abstraktion
Abstrakte Klassen und Methoden
Datenabstraktion ist der Prozess, bei dem bestimmte Details ausgeblendet und dem Benutzer nur wesentliche Informationen angezeigt werden.
Abstraktion kann entweder mit abstrakten Klassen oder erreicht werden schnittstellen (worüber Sie im nächsten Kapitel mehr erfahren werden).
Das Schlüsselwort abstract
wird für Klassen und Methoden verwendet:
- Abstrakte Klasse: ist eine eingeschränkte Klasse, die nicht zum Erstellen von Objekten verwendet werden kann (um darauf zuzugreifen, muss sie von einer anderen Klasse geerbt werden).
- Abstrakte Methode: kann nur in einer abstrakten Klasse verwendet werden und hat keinen Hauptteil. Der Hauptteil wird von der abgeleiteten Klasse bereitgestellt (geerbt von).
Eine abstrakte Klasse kann sowohl abstrakte als auch reguläre Methoden haben:
abstract class Animal
{
public abstract void animalSound();
public void sleep()
{
Console.WriteLine("Zzz");
}
}
Aus dem obigen Beispiel geht hervor, dass es nicht möglich ist, ein Objekt der Klasse „Animal“ zu erstellen:
Animal myObj = new Animal(); // Es wird ein Fehler generiert (Es kann keine Instanz der abstrakten Klasse oder Schnittstelle erstellt werden 'Animal')
Um auf die abstrakte Klasse zuzugreifen, muss sie von einer anderen Klasse geerbt werden. Konvertieren wir die Animal-Klasse, die wir im Kapitel C#-Polymorphismus verwendet haben, in eine abstrakte Klasse.
Erinnern Sie sich aus dem Kapitel zur Vererbung daran, dass wir das Symbol :
verwenden, um von einer Klasse zu erben, und dass wir das Verwenden Schlüsselwort override
zum Überschreiben der Basisklassenmethode.
Beispiel
// Abstrakte Klasse
abstract class Animal
{
// Abstrakte Methode (hat keinen Körper)
public abstract void animalSound();
// Reguläre Methode
public void sleep()
{
Console.WriteLine("Zzz");
}
}
// Abgeleitete Klasse (von Animal erben)
class Pig : Animal
{
public override void animalSound()
{
// Der Hauptteil von animalSound() wird hier bereitgestellt
Console.WriteLine("Das Schwein sagt: Pipi");
}
}
class Program
{
static void Main(string[] args)
{
Pig myPig = new Pig(); // Erstellen Sie ein Pig-Objekt
myPig.animalSound(); // Rufen Sie die abstrakte Methode auf
myPig.sleep(); // Rufen Sie die reguläre Methode auf
}
}
Warum und wann sollten abstrakte Klassen und Methoden verwendet werden?
Um Sicherheit zu erreichen, blenden Sie bestimmte Details aus und zeigen Sie nur die wichtigen Details eines Objekts an.
Hinweis: Abstraktion kann auch mit Schnittstellen erreicht werden, worüber Sie im nächsten Kapitel mehr erfahren werden.