Yazıma başlamadan önce, kalıtım konusu hakkında bilgi almak ve swift programlama dilindeki örneklerini görmek için aşağıdaki linki inceleyebilirsiniz. Bu şekilde yazım daha anlaşılır olacaktır.
https://kod5.org/swift-inheritance-kalitim/
Objective C’dekinin aksine, Swift programlama dilinde alt sınıf, üst sınıfın initializerlarını(bizim bildiğimiz constructor) otomatik olarak miras almaz.
Eğer üst sınıftaki initializer’ı ezerek değiştirmek yani override etmek istiyorsak, bunu init() ile yapabiliriz. Tabi bunu yaparken başına override eklememiz gerekiyor.
Üst sınıfta olan bir designated initializerı değiştirme işlemini aşağıdaki örnekte inceleyebiliriz.
Base class olarak Car adında bir sınıf oluşturuyoruz. Bu sınıf içerisinde numberOfDoors adında bir property tanımlıyoruz. Değerini de 0 olarak atıyoruz.
class Car { var numberOfDoors = 0 var description: String { return "\(numberOfDoors) door(s)" } }
let car = Car() print("Car: \(car.description)") // Car: 0 door(s) göreceğiz
Şimdi de bir adet alt sınıf tanımlıyoruz ve üst sınıftaki initializer’ı override ediyoruz. İlk başta sıfır olarak atadığımız numberOfDoors propertysini 4 olarak değiştireceğim.
class Bus: Car { override init() { super.init() numberOfDoors = 4 } }
Bus sınıfı init() şeklinde custom olarak tanımlanmış bir initializer’a sahip. Bu initialier’da üst sınıftakini çağırmaktadır ve değerini 4 olarak değiştirmektedir.
let bus = Bus() print("Bus: \(bus.description)") // Bus: 2 door(s) göreceğiz
Örnekte bahsettiğimiz şekilde, üst sınıfta 0 olarak atadığımız property’i, alt class’da override ederek 2 şeklinde değiştiğini görebilirsiniz 🙂
[…] Swift Kalıtım ve Override […]
son kod boloğundaki kapı sayısı çıktısı 4 olmayacakmı , 2 yazmışsınız bir yanlışlık olaiblirmi.