Bir önceki yazımızda ES6 ile beraber gelen Class kavramından bahsetmiş ve sınıflardan ürettiğimiz nesneler ile içerisine yazdığımız yardımcı metotlara ulaşabildiğimizi görmüştük. Bu yazımızda static metotlara ve kalıtım kavramına değineceğiz.
1) Static Metodlar
Static yardımcı metotlar; içerisindeki sınıf değişkenlerinden bağımsız, ilgili sınıftan bir nesne üretmeden, sınıf ismi ile ulaşabildiğimiz metotlardır. Static yardımcı metotlara ilgili sınıf parametrelerinden bağımsız parametreler gönderip istediğimiz sonucu geri döndürebiliriz.
Metodlara sınıf üzerinden erişimi bir örnek üzerinden anlatalım:
Oluşturduğumuz PuanTablosu isimli sınıf, içerisindeki puanHesapla() adlı yardımcı static metot ile gönderdiğimiz parametreler neticesinde ilgili takımın toplam puanınını göndersin. Gönderdiğimiz “G” (Galibiyet) parametresi +3, “B” (Beraberlik) parametresi ise toplam puana +1 eklesin. “M” (Mağlubiyet) ise puana hiç bir etki yapmasın.
Oluşturduğumuz her bir obje bir maç değerine karşılık gelmektedir.
1 | class PuanTablosu { |
Kullanım:
1 | const mac1 = new PuanTablosu("G"); //+3 |
1) ES6 ile Kalıtım
Diğer programlama dillerinde olduğu gibi javascript tarafında da oluşturduğumuz sınıfların özelliklerini kalıtım yolu ile başka bir sınıfa aktarabiliyorduk. Fakat bu biraz aşina olduğumuz yapılardan biraz farklı oluyordu. İsterseniz ES6 standartları ile kalıtım örneğine geçmeden önce bir örnek ile daha önceden nasıl kalıtım alıyorduk inceleyelim.
Akademisyen ve Personel adında iki adet sınıfımız olsun ve Akademisyen sınıfı Personel sınıfının özelliklerinden kalıtım yolu ile yararlansın.
1 | function Personel(ad,soyad) { |
Şimdi ise kalıtımı sağlayacak olan atamayı yapalım. Object.create() metoduna Akademisyen sınıfımızın prototype kısmını vererek bunu Akademisyen sınıfımızın prototype ına ekle veya at demiş oluyoruz. Yani Personel sınıfımızdaki bütün özellikler artık Akademisyen sınıfı tarafından da kullanılmış oluyor.
1 | Akademisyen.prototype = Object.create(Personel.prototype); |
Kullanım:
1 | var akademisyen = new Akademisyen("Kubra", "Şahin", "Doc.Dr"); |
ES6 ile kalıtım kavramını inceleyelim;
ES6 standartları ile sınıflar arası kalıtım “extends” anahtar kelimesi ile sağlanır.
1 | class altSınıf extends ustSınıf{ |
Ust sınıfa erişim için ise “super()” metodundan yararlanılır.
1 | class altSınıf extends ustSınıf{ |
Şimdi aynı örneğimizi ES6 sonrası kalıtım kavramı ile yeniden yazalım
1 | class Personel { |
Comments