Junior
У чему се састоји разлика између класа и структура у програмском језику Swift?
sobes.tech АИ
Одговор од АИ
Klase su tipovi referenci, strukture su tipovi vrednosti.
Glavne razlike:
- Nasleđivanje: Klase podržavaju nasleđivanje, strukture ne.
- Preoblikovanje tipa: Omogućava proveru i tumačenje tipa instance klase tokom izvršavanja.
- Deinitialization: Klase imaju destruktore (
deinit) za oslobađanje resursa, strukture nemaju. - Brojač referenci: Klase koriste automatski brojčanik referenci (ARC) za upravljanje memorijom. Strukture se kopiraju prilikom prenosa ili dodeljivanja (može se primeniti copy-on-write za optimizaciju).
- Mutating metode: Metode koje menjaju svojstva instance strukture ili enumeracije moraju biti označene ključnom reči
mutating. Za klase to nije potrebno.
Primer kreiranja:
// Struktura
struct Point {
var x: Int
var y: Int
}
// Klasa
class Circle {
var radius: Double
var center: Point
init(radius: Double, center: Point) {
self.radius = radius
self.center = center
}
}
Primer ponašanja pri dodeljivanju:
// Struktura
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Kopija
point2.x = 10
print(point1.x) // Izlaz: 1
// Klasa
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Referentno dodeljivanje
circle2.radius = 10.0
print(circle1.radius) // Izlaz: 10.0