Junior
Was ist der Unterschied zwischen Klassen und Strukturen in der Programmiersprache Swift?
sobes.tech KI
Antwort von AI
Klassen sind Referenztypen, Strukturen sind Werttypen.
Hauptunterschiede:
- Vererbung: Klassen unterstützen Vererbung, Strukturen nicht.
- Type Casting: Ermöglicht die Überprüfung und Interpretation des Typs einer Klasseninstanz zur Laufzeit.
- Deinitialisierung: Klassen haben Destruktoren (
deinit) zur Freigabe von Ressourcen, Strukturen nicht. - Referenzzählung: Klassen verwenden automatische Referenzzählung (ARC) zur Speicherverwaltung. Strukturen werden beim Kopieren oder Zuweisen kopiert (kann Copy-on-Write für Optimierungen verwenden).
- Mutierende Methoden: Methoden, die Eigenschaften einer Struktur- oder Enumeration-Instanz ändern, müssen mit
mutatinggekennzeichnet werden. Für Klassen ist dies nicht erforderlich.
Beispiel für die Erstellung:
// Struktur
struct Point {
var x: Int
var y: Int
}
// Klasse
class Circle {
var radius: Double
var center: Point
init(radius: Double, center: Point) {
self.radius = radius
self.center = center
}
}
Beispiel für das Verhalten bei Zuweisung:
// Struktur
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Kopie wird erstellt
point2.x = 10
print(point1.x) // Ausgabe: 1
// Klasse
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Referenzzuweisung
circle2.radius = 10.0
print(circle1.radius) // Ausgabe: 10.0