Junior
Swift dilinde sınıf kalıtım zincirinden bahsedin.
sobes.tech yapay zeka
AI'dan gelen yanıt
Swift'te tüm sınıflar, açıkça belirtilmese bile varsayılan olarak temel sınıf NSObject'den kalıtım alır. Bu, Swift'i bazı diğer dillerden ayırır; çünkü bazı dillerde birden fazla kök sınıf olabilir.
Kalıtım zinciri, her sınıfın özellikleri ve metodları, ebeveyn sınıfından (üst sınıf) devraldığı bir hiyerarşiyi temsil eder. Bir sınıf yalnızca bir doğrudan üst sınıfa sahip olabilir.
Örnek:
// Temel sınıf (varsayılan olarak NSObject'ten kalıtım alır)
class Animal {
var name: String
init(name: String) {
self.name = name
}
func makeSound() {
print("Bilinmeyen hayvan sesi")
}
}
// Dog sınıfı Animal'den kalıtım alır
class Dog: Animal {
let breed: String
init(name: String, breed: String) {
self.breed = breed
super.init(name: name) // Üst sınıfın başlatıcısını çağır
}
override func makeSound() { // Üst sınıfın metodunu geçersiz kılma
print("Hav hav")
}
}
// Poodle sınıfı Dog'dan kalıtım alır
class Poodle: Dog {
var isHypoallergenic: Bool
init(name: String, breed: String, isHypoallergenic: Bool) {
self.isHypoallergenic = isHypoallergenic
super.init(name: name, breed: breed) // Üst sınıfın başlatıcısını çağır
}
// Poodle, makeSound metodunu geçersiz kılmaz, Dog'dan kalıtım alır
}
let myDog = Dog(name: "Buddy", breed: "Labrador")
myDog.makeSound() // Çıktı: Hav hav
let myPoodle = Poodle(name: "Lucy", breed: "Miniature Poodle", isHypoallergenic: true)
myPoodle.makeSound() // Çıktı: Hav hav - Dog'dan kalıtım alır
Ana noktalar:
- Kalıtım:
B: Asınıfı,BsınıfınınAsınıfından kalıtım aldığını gösterir. - Üst sınıf: Kalıtım alınan sınıf. Örnekte,
AnimalDog'un üst sınıfıdır veDogPoodle'ın üst sınıfıdır. - Alt sınıf: Başka bir sınıftan kalıtım alan sınıf. Örnekte,
DogAnimal'ın alt sınıfıdır vePoodleDog'un alt sınıfıdır. super: Üst sınıfın metod veya başlatıcı uygulamasına erişmek için kullanılır.override: Alt sınıfta, üst sınıfın metod veya özelliklerini geçersiz kılmak için kullanılan anahtar kelimedir.final: Sınıf, metod veya özellik üzerinde kullanılabilen ve onun geçersiz kılınmasını veya kalıtımını engelleyen bir modifikatördür.
Örnekteki kalıtım zincirini gösteren tablo:
| Sınıf | Kalıtım aldığı sınıf | makeSound'u geçersiz kılıyor mu? |
|---|---|---|
NSObject |
- | Hayır |
Animal |
NSObject |
Hayır |
Dog |
Animal |
Evet |
Poodle |
Dog |
Hayır |
Kalıtım zinciri, kodun yeniden kullanılmasını sağlar, sınıfların özelleştirilmiş versiyonlarını oluşturur ve veri yapısını hiyerarşik biçimde organize eder.