İOS Swift

Swift Inheritance (Kalıtım)

Kalıtım

Kalıtım yada miras alma dediğimiz inheritance, bir sınıfın bir üst sınıftan metotları, propertyleri veya diğer sınıf karakteristiklerini miras almasıdır. Miras alınan sınıfa superclass, miras alan sınıfa ise subclass denir.

Miras alma kavramını daha iyi anlayabilmek için gerçek hayattan örnekler verebiliriz. Mesela miras alınan sınıfımız Araba olsun, miras alan sınıf ise Taksi olsun.

Araba sınıfımızın özellikleri şunlar olsun:

  • Renk
  • Motor Kapasitesi
  • Ağırlık
  • Yolcu Kapasitesi

Bu özellikler çoğaltılabilir.

Miras alan sınıfımız da Taksi sınıfı. Araba’da olan bütün özellikler de takside olmalı. Yani

  • Renk
  • Motor Kapasitesi
  • Ağırlık
  • Yolcu Kapasitesi özelliklerini Taksi sınıfımız Araba sınıfımızdan miras almış oldu.

Taksi sınıfı, araba sınıfındaki özellikleri miras alırken, bunların haricinde de özellikleri olabilir. Örneğin Taksi’nin;

  • Ticari taksi olup olmadığı
  • Taksinin tipi(sedan mı hatchback mi, vs) olması.

Bu özellikleri de daha sonra miras alan sınıfımıza tanımlayabiliriz.

Anlattıklarımızı bir görsel üzerinde gösterecek olursak;

miras alma

Katılım konusu sadece Swift programlama dili içerisinde olan bir konu değildir. Kalıtım, Nesne Yönelimli Programlama’nın temel prensiplerinden bir tanesidir ve nesne yönelimli programlama dillerinin hepsinde bulunur. Örneğin arkadaşımızın yazmış olduğu Java’ya Genel Bir Bakış yazısı içerisindeki inheritance kısmına göz atabilirsiniz.

Base Class

Herhangi bir sınıftan miras almayan sınıflara verilen isimdir.

Örnek olarak Vehicle adında bir base sınıf tanımlayacağız, bu sınıfın currentSpeed adında bir değişkeni olacak. Bu değişken read only olarak description adındaki değişken tarafından kullanılmaktadır ve aracın mevcut hızını göstermeye yarıyor.

 Yeni Bir Instance Oluşturma

Subclass

Miras alan sınıflara verilen isimdir. Genel syntax’ı şu şekildedir.

Şimdi de biz üstte tanımladığımız Vehicle sınıfından Bicyle adında bir sınıf miras alalım. Vehicle sınıfına ek olarak, Bicyle sınıfının sepeti olup olmadığını gösteren de ayrıca bir property’si olsun. Bu property’ninde default değerini false olarak verelim

Bicyle sınıfını tanımladık. Dilerseniz Bicycle sınıfından yeni bir instance türeterek hem Vehicle hem de Bicyle sınıfında tanımladığımız property’lerinin değerlerini atayalım.

Peki gelelim iç gıcıklatan soruya 🙂 Miras alan sınıflardan miras alınabilir mi ?

Cevabımız evet 🙂 İşte örneği;

Tandem adında bir sınıf oluşturduk ve Bicyle’dan miras aldı.

Türk Telekom Şirketinde CRM Çözümlerinde Teknik Analist olarak görev yapmaktayım. Geçmişte ise iOS uygulama geliştirici olarak çalıştım. Bilginin ve paylaşmanın gücüne can-ı gönülden inanırım..