Merhaba arkadaşlar ,
mobilhanem.com sitemiz için anlattığımız/yayınladığımız Swift Dersleri serimize bu yazımızda Swift Inheritance (miras alma) ile devam edeceğiz. Bir önceki yazımızda Swift Properties konusundan bahsetmiştik. Bu derse başlamadan önce xcode’u kurmak ve playground üzerinde swift kodu yazabilmek için bu dersimizi okumanızı tavsiye ederim.
Inheritance Nedir ?
Inheritance kelime anlamı olarak miras demektir. Inheritance bir sınıfın, başka sınıftan miras almasıdır. Miras alan sınıfa subclass, miras alınan sınıfa ise superclass denir. Miras almayı günlük hayatımızdan bir örnekle açıklayabiliriz,
Bir araba sınıfımız olsun ve bu araba sınıfından miras alan bir taksi sınıfımız olsun. Araba sınıfımızın bir kaç tane özelliği olsun,
- Teker sayısı
- Yolcu sayısı
- Renk
Taksi sınıfımız araba sınıfından miras aldığı için araba sınıfında olan bütün özellikler taksi sınıfındada olmalıdır. Bu durumda taksi sınıfının özellikleri,
- Teker sayısı
- Yolcu sayısı
- Renk
Bu şekilde olacaktır. Bu özellikleri araba sınıfından miras almış oldu bu özelliklerin dışında kendi sahip olduğu özelliklerde bulunabilir,
- Ticari plaka numarası
- Kayıtlı olduğu durak
Base Class Nedir ?
Base class, herhangi bir sınıftan miras almayan sınıflara verilen isimdir. Hemen bir örnek ile açıklayalım. Bir Hayvanlar sınıfımız olsun ve bu Hayvanlar sınıfımızın sesCikart diye bir fonksiyonu olsun. Bu sınıftan Kopek sınıfımız miras alsın ve Hayvanlar sınıfının fonksiyonunu override etsin,
class Hayvanlar {
func sesCikart() {
}
}
class Hayvanlar { func sesCikart() { } } |
Hayvanlar sınıfımızı oluşturduk. Hayvanlar sınıfımız base class ‘tır. Yani başka bir sınıftan miras almamıştır. Şimdi Hayvanlar sınıfından miras alan bir Kopek sınıfı yaratalım.
class Kopek: Hayvanlar{
override func sesCikart() {
print(“HAV HAV”)
}
}
class Kopek: Hayvanlar{ override func sesCikart() { print(“HAV HAV”) } } |
Kopek sınıfımızı oluşturduk ve Hayvanlar sınıfından miras aldık. Böylece Hayvanlar sınıfının sesCikart methodunu override ederek kendi sınıfımıza göre uyarladık. Şimdide Kopek sınıfımızdan bir instance üretelim ve sesCikart fonksiyonunu çağıralım,
var kopek = Kopek()
kopek.sesCikart()
var kopek = Kopek() kopek.sesCikart() |
Ve ekranda HAV-HAV yazısını görmüş olduk. Bu örneğimizi biraz daha genişletelim ve Kedi sınıfımızı oluşturalım. Yine aynı işlemleri yapacağız.
class Kedi: Hayvanlar{
override func sesCikart() {
print(“Miyav-Miyav”)
}
}
class Kedi: Hayvanlar{ override func sesCikart() { print(“Miyav-Miyav”) } } |
Kedi sınıfımızı oluşturduk. Bu sınıfımızda Hayvanlar sınıfından miras alacaktır. Ve base class ‘ımızın sesCikart fonksiyonunu override ettik ve düzenledik. Şimdi Kedi sınıfımızdan bir instance oluşturalım ve sesCikart fonksiyonunu çağıralım,
var kedi = Kedi()
kedi.sesCikart()
var kedi = Kedi() kedi.sesCikart() |
Ve ekranda Miyav-Miyav yazısını gördük böylece Hayvanlar sınıfından miras alan ve Hayvanlar sınıfının fonksiyonunu kendine göre düzenleyip kullanan sınıfları kullanmış olduk.
Miras Alan Sınıftan Miras Alınır Mı ?
Evet miras alan bir sınıftan başka bir sınıf miras alabilir. Hemen bir örnekle açıklayayım,
Bir köpek türü olan Sivas Kangal ‘ının HAAAAAAAAV-HAAAAAAAAAV diye havladığını varsayalım. Kopek sınıfından miras alan bir Kangal sınıfımız olsun. Ve bu Kangal sınıfında Kopek Sınıfından gelen fonksiyonumuzu override edelim,
class Kangal: Kopek{
override func sesCikart() {
print(“HAAAAAAAAV-HAAAAAAAAAV”)
}
}
class Kangal: Kopek{ override func sesCikart() { print(“HAAAAAAAAV-HAAAAAAAAAV”) } } |
Kopek sınıfımız Hayvanlar sınıfımızdan miras almıştı. Kangal sınıfımız ise Kopek sınıfımızdan miras almış oldu. sesCikart fonksiyonumuzu yukarıda bahsettiğim gibi yazdık. Şimdide Kangal sınıfımızdan bir instance oluşturalım ve sesCikart fonksiyonumuzu çağıralım,
var sivasKangali = Kangal()
sivasKangali.sesCikart()
var sivasKangali = Kangal() sivasKangali.sesCikart() |
Ve ekranda HAAAAAAAAV-HAAAAAAAAAV yazısını görmüş olduk. Ve miras alan bir sınıftan miras almış olduk. Bu yazıda miras almayı fonksiyonlar üzerinden anlattım. Sizde Hayvanlar sınıfına bacakSayisi isimli bir değişken tanımlayıp miras alınan sınıflarda bu değişkenin değerini sınıfın özelliğine göre değiştirebilirsiniz. Değiştirdiğiniz bu değeri bacakSayisiniGoster isimli bir fonksiyon oluşturup ekrana bastırabilirsiniz 🙂
Böylece swift dilinde miras alma işlemini nasıl yapabileceğinizi anlatmış oldum. Takıldığınız soruları yorum kısmından yazabilirsiniz.
let steveJobsQuote = “Great things in business are never done by one person. They’re done by a team of people.”
print(steveJobsQuote)
10