0

Java8 ile Gelen Yeni Interface Özellikleri. Java’nın çoklu kalıtıma çözümü olan interface derleyici ile yapılan bir çeşit kontrat olarak nitelendirilir. Yani interface içerisinde belirtilmiş olan metotlar bu interface‘i gerçekleyen (implements) sınıflarda mutlaka bulunmalıdır. Interface’de belirtilen metotlar açıkça yazılmak zorunda olmasa da abstract metotlardır ve metot gövdeleri ilgili sınıflarda doldurulmalıdır. Aksi takdirde derleme işleminin yapılabilmesi için gerçekleyen sınıfın soyut olarak tanımlanması gerekir. Benzer şekilde interface içinde tanımlanan değişkenler de açıkça belirtilmese de final değişkenlerdir. Buraya kadar interface kavramını kısaca özetlemiş olduk.

Java8 ile interface yeni bir takım özellikler kazandı. Yukarıda kısaca bahsettiğimiz gibi interface içinde metot gövdesi olamıyordu. Java8 ile birlikte default anahtar kelimesi ile tanımladığımız metotların gövdesini interface içinde yazabiliyoruz. Bu şekilde metotlara varsayılan bir davranış belirleyip bu interface‘i gerçekleyen her sınıfta aynı metodu tekrar tekrar yazmaktan kurtulmuş oluyoruz. Bu metotların gövdesi interface içinde gerçeklenmiş olduğundan derleyici, metodu sınıf içinde ayrıca yazmamız için diretmiyor.

İkinci bir yenilik artık interface içinde static metot tanımlayabiliyoruz. Default metot gibi interface içinde gövdesi olan bu tip metotların doğal olarak static geçerlilik alanında çağırılabiliyorlar.

Aşağıdaki örnekle bu yenilikleri deneyimleyebiliriz. Örnekte NewJava8Interface isminde bir interface tanımlıyoruz ve içersinde birer adet default ve static metot tanımı yapıyoruz.

/**
 * Created by alikatkar on 28/02/2017.
 */
public interface NewJava8Interface {

default void defaultMethod(){
System.out.println(“interface içinde tanımlanmış default metodu “);
}

static void staticMethod (){
System.out.println(“interface içinde tanımlanmış static metodu”);
}
}

Bu interface’i gerçekleyen somut sınıfımızı ise ConcreteClass ismiyle aşağıdaki gibi tanımlıyoruz. Main metodu içerisinde static geçerlilik alanında yani bir nesne yaratmadan interface ismi ile staticMehod() ‘u çağırıyoruz. Default metodu çağırabilmek için ise somut sınıfımızın (ConcreteClass) bir nesnesini yaratmak zorundayız.

/**
 * Created by alikatkar on 28/02/2017.
 */
public class ConcreteClass implements NewJava8Interface {

public static void main(String[] args) {

// static context’de static metodu çağırıyoruz
NewJava8Interface.staticMethod();

// Bir nesne yaratıp default metodu çağırıyoruz
ConcreteClass object = new ConcreteClass();
object.defaultMethod();

}
}

Collection Framework yazı dizimizde bahsettiğimiz java.util.Colellection interface’i Java8 in bu yeni özelliklerini stream(),  parallelStream(),  forEach(),  removeIf(),  gibi default metotlar ile bolca kullanmaktadır.  Benzer şekilde Java.util.List interface’in de default sort metodu tanımlanmış olup artık sıralama yapmak için Collections yardımcı sınıfı olmadan sıralama yapabilmekteyiz. Yani Collections.sort(list) gibi bir kod yazmak yerine list.sort(Comparator obj); şeklinde sıralama yapabiliyoruz. (Comparator kullanımı önceki yazılarda mevcut)

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

 

TAGs : java 8, java 8 interface, java 8 interface değişimleri, java 8 interface değisiklikleri, java 8 interface yenilikleri, java 8 interface ile gelenler, java 8 interface nedir, java 8 interface farklari

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Lisans eğitimini Yıldız Teknik Üniversitesi Elektronik ve Haberleşme Mühendisliğinde tamamladı. İTÜ Biyomedikal Mühendisliğinden ve Bahçeşehir Üniversitesi Mühendislik Yönetiminden Yüksek Lisans derecelerini aldı. Telekominikasyon sektörünün öncü firmalarından Netaş’da yazılım mimarı olarak çalışmaktadır. Okan Üniversitesinde 2 yıl Java’ya Giriş ve Dağıtık Yazılım Uygulamaları derslerini verdi.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir