1. Ana Sayfa
  2. Java
  3. Java8 ile Gelen Yeni Interface Özellikleri

Java8 ile Gelen Yeni Interface Özellikleri

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.

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.

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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

 

TAGs : , interface, , , , , ,

Yorum Yap

Yazar Hakkında

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.

Yorum Yap