Dart super( ) Constructor

Ertan Özdemir
ROYTO
Published in
4 min readSep 10, 2020

--

Bu yazıda Dart programlama dilinde sınıflar içerisinde kullandığımız super() yapısı hakkında bilgi vereceğim. Yeni başlayanlar için kafa karıştırıcı bir konu gibi görünsede aslında oldukça basit ve anlaşılabilecek bir kavram. Lafı fazla uzatmadan yazımıza başlayalım

Super Constructor Nedir?

Super() constructor, basitçe üst sınıfın varsayılan constructor’ına ulaşmamızı ve çalıştırmamızı sağlayan yapıdır. Elimizde araçlara ait bir sınıf olsun;

Oluşturduğumuz Araclar() sınıfı, içerisinde araç türlerini tutsun ve varsayılan constructor’ı yardımıyla [Araclar(this.aracTuru)] ekrana araç türünü yazdırsın istiyoruz. Bunun için aşağıdaki gibi bir kod yazmamız gerekecek;

Dart dilinde, main yapısı içerisindeki kodlar çalıştırıldığı için Araclar sınıfını oluşturduktan sonra bunu main içerisinde kullanıp kodumuzu çalıştırıyoruz. Çıktımız aşağıdaki gibi görünecektir;

Aslında buraya kadar basit bir sınıf oluşturmaktan başka bir şey yapmadık. Şimdi ise super() yapısını kullanacağımız bir alt sınıf oluşturalım. Alt sınıf oluşturmak için öncelikle normal bir sınıf oluşturup daha sonra extends kullanarak üst sınıfımızın ismini yazıyoruz.

Oluşturduğumuz Motosiklet alt sınıfı, içerisinde motosiklet modelini ve tekerlek sayısını tutsun.

Şimdi ise alt sınıfımıza ait varsayılan constructor’ı oluşturalım.

Fakat gördüğünüz üzere alt sınıfımızın constructor’ında bir hata alıyoruz üstüne farenin imleciyle gelip hatamızın ne olduğuna bir bakalım.

Hata mesajında superclass’ın yani üst sınıfımızın constructor’ının 0 tane elemana sahip olamayacağını söylüyor. Zaten hatırlarsanız üst sınıfımızda constructor’ımız [Araclar(this.aracTuru)] bir elemana sahipti. İşte tam bu noktada uzun zamandan beri görmeyi beklediğimiz super() yapısı devreye giriyor.

Hadi super()’i kullanalım;

Super() yapısını alt sınıf constructor’ının yanına “:” ifadesini yazdıktan sonra ekliyoruz;

Yazının başında da yazdığım gibi super(), bizim üst sınıfımızda ki varsayılan constructor’a erişmemizi sağlayan bir yapıydı. Bu yüzden üst sınıfta kullandığımız constructor’da bir eleman olduğu için super() yapısı da bizden 1 tane eleman bekliyor. Beklenen eleman için “Motosiklet” (bunun yerine herhangi bir string değer de yazabilirsiniz ekranda buraya ne yazdığınız görünecektir) yazalım, küme parantezleri içerisine de alt sınıfımıza ait bilgileri girelim.

Sıra geldi en heyecanlı âna, daha öncesinde main içerisinde yazdığımız üst sınıfımızı silip alt sınıfımızı yazarak çalıştıralım.

Gördüğünüz gibi ilk olarak super yapısı içerisine girilen “Motosiklet” değerini üst sınıfa ulaştırdı ve üst sınıftaki constructor’ı çalıştırıp “Araç türü: Motosiklet” ifadesini yazdırdı. Daha sonra ise alt sınıfımızdaki köşeli parantezler içerisinde bulunan kısmı yazdırdı. Teknik olarak super() yapısı bu kadar fakat varsayılan constructor olmayan bir yapıya super ile erişmek isterseniz ne yapmanız gerekiyor? Aslında cevap çok basit! Hadi hemen hızlıca ona da bakalım.

Araclar sınıfını içerisine Araclar.motor adında varsayılan olmayan bir constructor yazalım.

Şimdi buna alt sınıfımızdan super() yapısı yardımıyla erişmeye çalışalım.

Super dedikten sonra yukarıda ki varsayılan olmayan constructor’ın ismini yazınca sorunumuzu halletmiş oluyoruz.

En basit anlamda super() constructor bu kadar. Kodlar üzerinde denemeler yaparak konuyu daha iyi kavrayabilirsiniz 😊

Kaynakça 1 : Zeki Çıplak — Udemy Dart Eğitimi

Kaynakça 2 : https://www.geeksforgeeks.org/super-constructor-in-dart/

--

--