Was ist der Unterschied zwischen Protokollen und Klassen im Kontext abstrakter Klassen?
sobes.tech KI
Antwort von AI
Protokolle definieren eine Reihe von Anforderungen (Methoden, Eigenschaften), die Typen (Klassen, Strukturen, Aufzählungen) erfüllen müssen. Sie bieten keine fertige Implementierung. Klassen dienen als Vorlagen zur Erstellung von Objekten, die Zustand (Eigenschaften) und Verhalten (Methoden) enthalten.
Im Kontext abstrakter Klassen (die in Swift nicht explizit vorhanden sind):
- Imitation einer abstrakten Klasse durch eine Klasse: Es wird eine Klasse erstellt, die Vererbungen haben kann. Einige Methoden können mit
fatalErrormarkiert oder mit leerer Implementierung versehen werden, um in Unterklassen überschrieben zu werden. Der Zustand (Eigenschaften) kann für alle Erben gemeinsam sein. - Imitation einer abstrakten Klasse durch ein Protokoll: Es wird ein Protokoll mit einer Reihe von erforderlichen Methoden und Eigenschaften definiert. Typen, die dieses Protokoll übernehmen, müssen ihre eigene Implementierung aller Anforderungen bereitstellen. Das Protokoll kann keinen Zustand enthalten, nur Anforderungen.
Hauptunterschied: Klassen können eine Basisebene-Implementierung und Zustand bereitstellen, während Protokolle nur die Schnittstelle ohne Implementierung und Zustand beschreiben. Die Imitation von Abstraktion durch Protokolle ist flexibler, da ein Protokoll nicht nur von Klassen, sondern auch von Strukturen und Aufzählungen übernommen werden kann.