Junior
Swift programlama dilinde sınıflar ve yapılar arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Sınıflar referans tipleri, yapılar ise değer tipleridir.
Ana farklar:
- Kalıtım: Sınıflar kalıtımı destekler, yapılar desteklemez.
- Tür Dönüşümü: Bir sınıf örneğinin türünü çalışma zamanında kontrol etmeye ve yorumlamaya izin verir.
- Yıkıcılar: Sınıflar kaynakları serbest bırakmak için
deinityıkıcılarına sahiptir, yapılar yoktur. - Referans Sayımı: Sınıflar bellek yönetimi için otomatik referans sayımı (ARC) kullanır. Yapılar, kopyalanırken veya atanırken kopyalanır (optimizasyon için copy-on-write uygulanabilir).
- Değiştirici metodlar: Bir yapı veya enum örneğinin özelliklerini değiştiren metodlar
mutatinganahtar kelimesiyle işaretlenmelidir. Sınıflar için gerekmez.
Oluşturma örneği:
// Yapı
struct Point {
var x: Int
var y: Int
}
// Sınıf
class Circle {
var radius: Double
var center: Point
init(radius: Double, center: Point) {
self.radius = radius
self.center = center
}
}
Atama sırasında davranış örneği:
// Yapı
var point1 = Point(x: 1, y: 2)
var point2 = point1 // Kopya oluşturulur
point2.x = 10
print(point1.x) // Çıktı: 1
// Sınıf
var circle1 = Circle(radius: 5.0, center: Point(x: 0, y: 0))
var circle2 = circle1 // Referans ataması
circle2.radius = 10.0
print(circle1.radius) // Çıktı: 10.0