Sponsor Reklam 


20.09.2008 (21:18)

 interface, implements Anahtar Sözcüğü, Keyword 
class tipinden daha önce burada bahsetmiştik. inteface anahtar sözcüğü ile tanımlananlar ise özet tipler (abstract type) olarak yani arabirimler olarak yapılmaktadır. Bu arabirimler uygulanacak sınıfların yapması gerekenleri içerir. İçinde bulunan metotların bu arabirimi uygulayan sınıf tarafından tanımlanması gerekir. Arabirimler bir çeşit prototip örneği sergiler. Çalışma zamanında da dinamik metot çözümlemesini destekler.

Arabirimde yer alan metotlar gövdesizdir (prototip haldedir, onun formunu belirtir). Bunlar zorunlu olarak özet (abstract) tipte metotlardır. Arabirimde tanımlanan değişkenler de zorunlu olarak final ve static'tir.

Arabirimin sınıflarca uygulanması implements anahtar sözcüğü ile yapılır ve sınıf hiyerarşisinde genişletmenin (kalıtım, extends) aksine bir sınıf birden fazla arabirimi uygulayabilir (implements).

public class Dikdortgen extends Cokgen, implements AlanHesapla, CevreHesapla {
  // Dikdortgen sınıfı Cokgen sınıfından miras alır ve
  // AlanHesapla, CevreHesapla arabirimlerini uygular
  // Arabirimlerdeki metotları tanımlar
}

Ayrıca arabirimler de genişletilebilir.

interface Islem {

  // otomatik olarak abstract tipte olan gövdesiz metotlar
  void carp(); // Gövdesiz halde
  void bol();  // Gövdesiz halde

}

interface DortIslem extends Islem {

  void topla();  // Gövdesiz halde
  void cikart();  // Gövdesiz halde

}

class Hesap implements DortIslem {

  public void carp() {
    // işlemler
  }

  public void bol() {
    // işlemler
  }

  public void topla() {
    // işlemler
  }

  public void cikart() {
    // işlemler
  }

}

Hesap sınıfı Islem arabirimini genişleten DortIslem arabirimini uyguluyor. Bu nedenle carp, bol, topla, cikart metotlarını da tanımlamak zorunda kalıyor.

Görüldüğü gibi arabirimler implements anahtar sözcüğü ile gerçeklenmektedir. Çok biçimlilik için bir yöntemdir. Hagi kurallar kümesinin uygulanacağı bilinmektedir.

Eğer bir sınıf bir arabirimi gerçekleyecek (implements) fakat metotlarını uygulamayacak ise (uygulamak zorunda olmaması için) bu sınıf abstract olarak belirtilmelidir. Bu sınıftan türeyen sınıflar ya üst sınıfın gerçeklediği arabirimin metotlarını uygulamalı ya da yine abstract olarak deklare edilmelidir.

Bu konuyla ilgili şuralara da bakılabilir:
* interface
* java interface
Imza: admin








Yazilar kaynak gosterilmeden kopyalanamaz © www.kodcu.net // Twitter