"Enter"a basıp içeriğe geçin

İnterface’ler

İnterfaceler, ondan oluşturulacak sınıflar için bir kılavuz gibidirler. Nesneleri oluşturulamaz. Ama referansları ile alt sınıf nesneleri tutulabilir.

İnterface içinde fonksiyonların imzaları bulunur ama fonksiyonlar yazılmaz. Bunun anlamı, interface’ten implement edilen tüm sınıflarda bu fonksiyonlar bulunmak zorunda demektir. Yani İnterface’leri anlaşma gibi düşünebiliriz. Ona uyan tüm sınıflarda bu özellikler bulunmak zorundadır.

Bunun da amacı referanslar ile alt sınıf nesnelerini tutulabilmeyi garantilemektir. İnterface’de bulunan tüm üyeler sınıflarda da bulunduğu kesin olduğundan, interface referansı ile sınıf nesnelerini tutabiliriz.

  • Sınıflarda daha fazla da özellik olabilir. Ama Interface referansı ile sadece Interface’de tanımlı olan imza ve değişkenler kullanılabilir.
  • Interface içinde tanımlanan değişkenler public olmalı ve ilklendirilmelidirler.
  • Bir class birden çok sınıftan türeyemez, ama birden çok interface’den implement edilebilirler. Implement uygulamak demektir.

Bir interface oluştururken dosyaya sağ tıklayıp new dediğimizde Interface seçeriz. public interface OrnekInterface {} şeklinde bir yapı oluşur. Artık Interface’den implement edilecek her sınıfta olması gereken özellikleri bu bloğun içinde tanımlayabiliriz.
Üyelerde erişim belirtecine gerek yoktur.

İnterface içinde private ifade kullanılamaz.
Interface içindeki üyeler otomatik olarak static tanımlanır. Böylece nesne oluşturmadan (zaten oluşturamayız), sadece interface ismi ile bu üyelere erişebiliriz. Ayrıca sadece interface ismi ile çalışacak static fonksiyonlar da yazabiliriz. Bunlar interface ile implement edilmek zorunda değildir. Yani alta geçmez.

Sınıfımızı implement ederken de public class OrnekClass implements OrnekInterface { } şeklinde tanımlarız.

Diğer sınıflarda kullanılmak için oluşturulmuş nokta sınıfı:

 

İnterface:

 

Üçgen sınıfı:

 

Dörtgen Sınıfı:

 

Görüldüğü gibi Interface’de tanımlı tüm üyeleri sınıflarda tamamladık. Eğer eksik olsaydı hata alırdık. origin değişkeni static olduğu için yeniden tanımlamaya gerek kalmadı. Tüm sınıflara geçti.
İnterface’de imzası olan fonksiyonları, Interface referansı ile kullanabildik. Ama Interface’de tanımlı olmayanları kullanamadık.

Şimdi diyeceksiniz bunun bize ne yararı var.

  • Interface’lerin sağladığı ilk fayda şudur. Eğer büyük bir projede çalışıyorsak ve birçok sınıf varsa, sınıfta olması gereken özellikleri unutmamak için kurallar oluşturabiliriz. Yani oluşturduğumuz sınıfla ilgili bir yol haritası çizmiş oluruz.
  • İkinci olarak, birden çok Interface’i ımplement edebildiğimiz için bazı problemleri de çözebilme imkanımız vardır.

class OrnekClass implements OrnekInterface1, implements OrnekInterface2 { } diyerek iki Interface birden implament edebiliriz.

Sınıfımızda her iki Implementte bulunan özellikler de bulunmak zorundadır. Ayrıca OrnekInterface1 referansı ile sadece o interface’teki üyeler, OrnekInterface1 referansı ile de ondaki üyeler kullanılabilir.

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir