Sobes.tech
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 mutating gekennzeichnet 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