Java Eğitimi 27-Interface

Merhabalar,

Bu bölümde interface yapısı ile ilgileneceğiz. Nesne yönelimli programlarda en önemli yapılardan birisi interface(arayüz) yapılarıdır.  Öncelikle “Interface Nedir?” sorusu ile başlayalım.

Java programlama dilinde, tasarım şablonları ve modellemede kullanılabilecek sınıflar interface sınıfları ile tanımlanır. Bir interface sınıfı normal bir sınıf gibi açılır. Farkı; sınıfı tanımlarken class yerine interface kalıbını kullanmaktır. 

Neden Interface Kullanırız?

Örneğin kalıtım konusunu göz önüne getirelim. Kalıtımı bir sınıftan başka bir sınıfa aktarmada kullanırız. Ama diyelim ki bir sınıfa birden fazla sınıftan kalıtım aktarmak istiyoruz. İşte o zaman kullanacağımız yapı interface olur.

Yeni bir nesne oluşturmayı hatırlıyor musunuz? Bunu new() operatörünü kullanarak yapıyorduk. Ama interface ile bir sınıf tanımladığımızda nesne oluşturmayı sadece new() ile yapamayız. Çünkü interface sınıfında açıklanan şey yalnızca metotlardır. Burada yer alan metotların gövdeleri ise boştur. Bunu da şu şekilde açıklayabilirim: Açtığımız alt sınıflar interface sınıfında yer alan metotların gövdesi için gereken kodları oluştururlar. Metot gövdesi nesne oluşturmaya yarar; yani metot gövdesi olmayan bir interface sınıfında nesneden söz edemeyiz. 

Interface Özellikleri

  • Interface yani arayüzler anlık(instance) değişken içermezler. Bu sebeple arayüzde tanımlanan değişkenler, onu çağıran sınıflar tarafından değiştirilemezler. 
  • Bir sınıf birden fazla interface ile çağrılabilir ki buna implement adını veririz.
  • Aynı interface’i, birden fazla sınıf çağırabilir. 
  • Sadece public ve default erişim belirteçleri ile oluşturulurlar.
  • Interface’deki metotlar gövdesizdir. Buna karşın, sınıfta yer alan metotlar tanımlıdır. Gövde; yapılan işi belirtir. Gövdesi olmayan bir metodun ne iş yaptığı açıklanamaz. (Interface yapılarda fonksiyonlar gövdesizdir.)
  • Interface sınıfından nesne üretilmez. 
  • Interface yapısının içinde yer alan fonksiyonların hepsi abstrack(soyut sınıf)’tır. 
public interface araba {

public String getarabamarkası();

}

Üstte yer alan kodları açıklayarak başlayayım. Önce “araba” adında bir sınıfı açtım. Böylece interface tanımlanmış oldu. İkinci adım olarak araba markaları için iki ya da üç tane sınıf açmamız gerekecek. Buradaki sınıf sayısının seçimi size kalmış. Ben Audi ve Volkswagen olarak iki sınıf açmayı tercih ettim. İşte açacağımız bu iki sınıf araba sınıfımızı implemente eder. Yani bu sınıflar getarabamarkarkası() metodu ile metot gövdesine gerekli kodu oluştururlar. 

public class Audi implements araba {

public String getarabamarkası(){
return "Audi";
}

}
public class Volkswagen implements araba {

public String getarabamarkası(){
return "Volkswagen";
}

}
public class arabayı_test_et {

public static void main(String[] args){
Audi nesne=new Audi();
Volkswagen nesne_2=new Volkswagen();
System.out.println(nesne.getarabamarkası());
System.out.println(nesne_2.getarabamarkası());
}
}

Ekran çıktısını da görelim.

Başka bir örnek daha göstermek istiyorum.

public interface ogr_bilgileri {

public String getAdı();
public void setAdı(String ad);

public String getnumara();
public void setnumara(String numara);

public String getsınıf();
public void setsınıf(String sınıf);
}

İlk sınıfta tanımlanan öğrenciler, ikinci sınıfta ogr_bilgileri arayüzünün kalıtımını alırlar. 

public class Ogrenciler implements ogr_bilgileri {

private String ad;
private String numara;
private String sınıf;

@Override
public String getAdı() {
return this.ad;
}
@Override
public void setAdı(String ad) {
this.ad=ad;
}
@Override
public String getnumara() {
return this.numara;
}
@Override
public void setnumara(String numara) {
this.numara=numara;
}
@Override
public String getsınıf() {
return this.sınıf;
}
@Override
public void setsınıf(String sınıf) {
this.sınıf=sınıf;
}

}

Interface ve sınıfları oluşturduğumuza göre bunları üçüncü bir sınıf açarak kullanabiliriz. 

public class ogrenci {

public static void main(String[] args){
ogrenci ogr=new ogrenci();
}
}

Yukarıda gördüğünüz gibi ogr adı altında yeni bir değişken oluşturmuş olduk. Bu değişken üzerinden bütün metotlara eişebiliriz.(getAdı(), getnumara(), getsınıf(), setsınıf() gibi) 

“Java Eğitimi 27-Interface” için 4 cevap

  1. Çok başarılı bir anlatım, teşekkürler.

    Liked by 1 kişi

    1. Teşekkür ederim, böyle düşündürdüyse ne mutlu bana.

      Beğen

  2. harika acıklama olmus elinize sağlık

    Liked by 1 kişi

    1. Teşekkürler, var olun.

      Beğen

Yorum bırakın