Sobes.tech
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 deinit yı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 mutating anahtar 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