Java Interface ve Çoklu Kalıtım Almak
Java meraklısı yazılımcılara selamlar :)
Önceki Java makalemizde inheritance (kalıtım) konusunu öğrenmiş ve sınıflar arasında property ve metotların nasıl devralındığını görmüştük.
Kalıtım alan sınıfın tek başına başka bir sınıftan property ve metotları devralması maalesef gerçek hayattaki yazılım projelerde yetersiz kalmaktadır ve bu yüzden programlama dili geliştiricileri tarafından interface (arayüz)
kavramı geliştirilmiştir.
Interface'i Türkçe'ye çevirdiğimizde arayüz sözcüğüyle karşılaşıyoruz ancak arayüzden kastımız görsel bir konu değildir.Arayüz,kendisinden kalıtım alacak bir sınıfın içerisinde yer alacak olan metotların imzalarını (içi boş
hallerini) içerir.
Eğer C# biliyorsanız Java ile aralarında ufak tefek farkların olduğunu biliyor olabilirsiniz.İşte bu ufak tefek farklardan biriside C# interface'lerin içerisinde property (özellik) yer alabiliyorken maalesef Java interface'lerinde property
yer alamıyor.Neyse konumuza devam edelim..
Bir Java sınıfı tek bir sınıftan kalıtım alır ancak sınırsız sayıda interface'den kalıtım alabilir ve aldığı her kalıtımın imzalarını kendi içerisinde doldurmak zorundadır.
Buraya kadar anlattıklarım havada kalmasın diye artık uygulamaya geçelim di mi :)
Şimdi NetBeans uygulamamızı açıyor ve yeni bir Java projesi oluşturduktan sonra aşağıdaki şekilde "Anne" ve "Baba" isimlerinde iki interface ekliyoruz.Varsayım olarak anneden gülümseme ve sevme fonksiyonunu kalıtım alalım,babamızdan ise yürüme ve konuşma fonksiyonunu alalım:
Inheritance konusuna dönüyor ve oluşturduğumuz bu iki interface'den kalıtım alıyoruz.Bunun için sınıfımızın adının yanına "implements" (sağlar) anahtar sözcüğünü yazar ve interface adını ekleriz.Eğer bir sınıf birden çok interface'den kalıtım alacaksa her interface adının arasına virgül (,) işareti koyarız:
Interface'den kalıtım aldıktan sonra NetBeans biz yazılımcılara metotların imzalarını otomatik doldurup doldurmamak adına bir ampül işareti gösterir:
Eğer "Implements all abstract methods" seçeneğini seçersek interface'den gelecek metotları dolduracak,"Make Class Cocuk abstract" seçeneğini seçersek ileride göreceğimiz abstract sınıf oluşturur.Şimdilik interface'den metotları kalıtım alalım:
ve NetBeans metotlarımızı getirdi ancak metotlarımız ne yapacağımızı belirtmediğimiz için metot içerikleri UnsupportedOperationException (desteklenmeyen operasyon istisnası) tipinde bir exception kodlarıyla
dolduruluyor.Tabiki aslında bu bir sorun değil çünkü bu kod satırını sildikten sonra kendi kodlarımızı yazmamız isteniyor.
Interface'lerden kalıtım alan sınıfımızın şimdi instance'ını oluşturalım ve metotları çağıralım:
Böylece Java interface ile kalıtım konusunu öğrenmiş oluyoruz ve artık makalemizin sonuna gelmiş bulunuyoruz.
O halde bir sonraki makalemizde görüşmek üzere hoşçakalın :)
Önceki Java makalemizde inheritance (kalıtım) konusunu öğrenmiş ve sınıflar arasında property ve metotların nasıl devralındığını görmüştük.
Kalıtım alan sınıfın tek başına başka bir sınıftan property ve metotları devralması maalesef gerçek hayattaki yazılım projelerde yetersiz kalmaktadır ve bu yüzden programlama dili geliştiricileri tarafından interface (arayüz)
kavramı geliştirilmiştir.
Interface'i Türkçe'ye çevirdiğimizde arayüz sözcüğüyle karşılaşıyoruz ancak arayüzden kastımız görsel bir konu değildir.Arayüz,kendisinden kalıtım alacak bir sınıfın içerisinde yer alacak olan metotların imzalarını (içi boş
hallerini) içerir.
Eğer C# biliyorsanız Java ile aralarında ufak tefek farkların olduğunu biliyor olabilirsiniz.İşte bu ufak tefek farklardan biriside C# interface'lerin içerisinde property (özellik) yer alabiliyorken maalesef Java interface'lerinde property
yer alamıyor.Neyse konumuza devam edelim..
Bir Java sınıfı tek bir sınıftan kalıtım alır ancak sınırsız sayıda interface'den kalıtım alabilir ve aldığı her kalıtımın imzalarını kendi içerisinde doldurmak zorundadır.
Buraya kadar anlattıklarım havada kalmasın diye artık uygulamaya geçelim di mi :)
Şimdi NetBeans uygulamamızı açıyor ve yeni bir Java projesi oluşturduktan sonra aşağıdaki şekilde "Anne" ve "Baba" isimlerinde iki interface ekliyoruz.Varsayım olarak anneden gülümseme ve sevme fonksiyonunu kalıtım alalım,babamızdan ise yürüme ve konuşma fonksiyonunu alalım:
Inheritance konusuna dönüyor ve oluşturduğumuz bu iki interface'den kalıtım alıyoruz.Bunun için sınıfımızın adının yanına "implements" (sağlar) anahtar sözcüğünü yazar ve interface adını ekleriz.Eğer bir sınıf birden çok interface'den kalıtım alacaksa her interface adının arasına virgül (,) işareti koyarız:
Interface'den kalıtım aldıktan sonra NetBeans biz yazılımcılara metotların imzalarını otomatik doldurup doldurmamak adına bir ampül işareti gösterir:
Eğer "Implements all abstract methods" seçeneğini seçersek interface'den gelecek metotları dolduracak,"Make Class Cocuk abstract" seçeneğini seçersek ileride göreceğimiz abstract sınıf oluşturur.Şimdilik interface'den metotları kalıtım alalım:
ve NetBeans metotlarımızı getirdi ancak metotlarımız ne yapacağımızı belirtmediğimiz için metot içerikleri UnsupportedOperationException (desteklenmeyen operasyon istisnası) tipinde bir exception kodlarıyla
dolduruluyor.Tabiki aslında bu bir sorun değil çünkü bu kod satırını sildikten sonra kendi kodlarımızı yazmamız isteniyor.
Interface'lerden kalıtım alan sınıfımızın şimdi instance'ını oluşturalım ve metotları çağıralım:
Böylece Java interface ile kalıtım konusunu öğrenmiş oluyoruz ve artık makalemizin sonuna gelmiş bulunuyoruz.
O halde bir sonraki makalemizde görüşmek üzere hoşçakalın :)