JAVA Programlama

JAVA’DA ARAYÜZLER

image_pdfimage_print

ARAYÜZLER

Merhabalar, Burada sizlere Java’da Arayüzler konusunu özetleyecegim.

İlk önce arayüzleri neden kullanma geregi duyarız ve ne işe yarar bahsedelim..

Java’da bir sınıftan extends anahtar kelimesi ile kalıtım alınarak yeni bir sınıf oluşturulabildigini ögrenmiştik.Ancak çoklu kalıtımı saglamak bu yolla risk taşımaktadır.

Arayüzlerin özeliklerinden bahsedelim:

*Arayüzler interface anahtar sözcügü ile tanımlanır.

*Arayüzler sadece soyut metodlar içerir.

*Arayüzlerde degiskenler final tipinde tanımlanmalıdır.Bizler yazmasak da Java, degiskeni final tipinde varsayacaktır.

*Tanımlanan degiskene ilk deger verilmelidir.(Bu zaten final tipindeki degiskenin özelligidir,zorunluluktur).

*Arayüzlerde yapılandırıcı bulunmaz.

* Arayüz sınıflar sadece public veya friendly erişim belirleyicisine sahiptir.Public olarak varsayılır.

*Bir sınıf birden fazla arayüz kalıtım alabilir.

*Bir arayüz birden fazla sınıfa kalıtım verebilir.

Arayüz sınıf NetBeans ortamında nasıl oluşturulur?

 

ARAYÜZLERİN GENEL TANIMLAMA BİÇİMİ

erişim_belirleyicisi interface SınıfAdı{
final tip degişken_adı = 44;
tip metod_adı();
262 JAVA 8
tip metod_adı(parametre);
tip metod_adı(parametre,parametre,. . . );

 

 

yukarıda da görüldügü üzere soyut metodlar tanımladık ve final tipinde ,ilk deger atanmış degiskenler tanımlayarak bir interface yani arayüz oluşturduk.Final tipinde tanımlanan degiskenlere ilk deger atanmak zorundadır.Final tipinde tanımlanan degiskenlerin degerleri erişilen diger sınıflardan degistirilemez.

Bu arayüzden kalıtım alarak normal bir sınıf oluşturabiliriz.Bunu yaparken IMPLEMENTS anahtar söcügünü kullanacagız.

yukarıdaki örnekte görüldügü gibi 3 adet soyut (gövdesiz)metod tanımlanmıştır.Arayüz içinde tanımlanan metodlar soyut olmalıdır.Parametre alan veya parametre almayan metodlar tanımlanabilir.

Neden normal sınıflardan kalıtım alırken kullandıgımız extends anahtar sözcügünü kullanmıyoruz?

Extends ile kalıtım alırız.

Implements ile çoklu kalıtımı gerçekleştiririz.

IMPLEMENTS ANAHTAR SÖZCÜGÜ

yukarıda da bahsedildigi gibi arayüzlerden kalıtım almak için kulanılan anahtar sözcüktür.

Kalıtım aldıgımız arayüzde tanımlı tüm metodların iptal (@Override) edilmesi gereklidir.Aksi halde iptal edilmedigine dair hata ile karşılaşılır.

 

Arayüzlerin genel biçimini tanımlamaya örnek verirken soyut metodlar tanımlamıştık.Bu soyut metodları kalıtım alarak oluşturdugumuz sınıf altında @Override ediyoruz ve normal metod gibi tanımlayabiliyoruz.

Ana programda yukarıdaki metodları nasıl çagırırız inceleyelim..

Görüldügü gibi kalıtım alarak oluştrulan sınıftan referans alarak nesne oluşturduk.Ve bu nesneyi kullanarak metodları çagırdık.Parametreli olan soyisimGoster metodumuza parametre gönderdik.

ARAYÜZLER VE DEGİSKENLER

Arayüzlerde degiskenlerin final tipinde tanımlanması erektiginden bahsetmiştik aynı zamnda ilk degerleri atanmalıydı.Ayrıca tanımlanan degiskenler siz belirtmeseniz de static durumundadır.

Arayüzlerde  degiskenler 3 farklı kullanım tipinde tanımlanabilir.

Yukarıdaki örnege dikkat edelim.3 şekilde de normal sınıfta ,Arayuz sınıfındaki degiskenlere erişilebilinir.Bunlardan en kullanışlım olanı 3. kullanımdır.Dikkat ederseniz 3.kullanım static erişim şeklidir.Yani sınıf ismi belirtilerek erişilmiştir.Arayüzler nesneya sahip olmazlar.Yani new anahtar kelimesi ile türetilemezler.

ARAYÜZLER ORTAMINDA ÇAKIŞMA

Birden fazla arayüz aynı isimde metodlar barındırırsa ,bu arayüzlerden kalıtım alan sınıf içinde @Override etme anında hata meydana gelecektir.Çünkü IDE hangi arayuzdeki metodu override edecegini bilemez.Karışıklık meydana gelir.

ArayuzSinifi2 diye bir  arayuz sınıfı daha oluşturduk ve bu sınıfın içerisinde de aynı isimlerde metodlar tanımladık ve de aynı tipte aynı isimde degiskenler tanımladık.Şimdi bu iki sınıftan kalıtım alan normal sınıfımıza bakalım…

Evet yukarıda hata oluştugunu görmekteyiz.IDE burada hangi arayuzun metodunu override edecegini bilmez ve hata meydana gelir.

ARAYUZLER VE SOYUT SINIFLAR

Soyut sınıflar arayuzlerden kalıtım alabilir.Ancak arayuzlerin içindeki metodları Override etmesine gerek yoktur çünkü kısmen arayuz görevi görmektedir.Örnege bakalım..

Soyut sınıfı tanımladık ve soyut sınıfın içinde de görüldügü gibi soyut metodlar tanımladık ve normal bir metod tanımladık.Şimdi bu soyut sınıftan kalıtım alan başka normal bir sınıf oluşturalım..

Soyut sınıftan kalıtım alarak oluşturdugumuz normal sınıf içerisinde soyut sınıf içindeki ve diger iki arayüzün içindeki tüm metodları override ettik.Etmeyi unutsanız da Java size uyarı verecektir.

DAHİLİ ARAYUZLER

Daha önceki konularda Sınıfların iç içe tanımlanabildiginden bahsetmiştik.Arayüzler de iç içe tanımlanabilir.

Şimdi bu üç arayuzden de kalıtım alan normal sınıf tanımlayalım.

Dikkat ederseniz iç içe tanımlı üç arayuzden kalıtım alırken ilk önce Ana arayuz adını yazıp (.)operandı ile alt arayuzleri çagırdık.Biz eger sadece en sondaki yani en altta/en içte tanımlı arayuzden kalıtım alıyor olsaydık tanımlama biçimimiz şu olacaktı..

Ayrıca override işlemleri sadece en içteki arayuzun metodları için gerçekleşecekti.

Aynı kural diger arayuzlere erişimi için de geçerlidir.

ÖRNEKLER
1. Birden çok arayüze erişen bir sınıf geliştiriniz.
2. Arayüzlere erişen bir soyut sınıf geliştiriniz.
3. Dahili arayüzlere örnek bir uygulama geliştiriniz.

Yukarıdaki Örnekler kendinizi geliştirmeniz için ve konuyu anlayıp anlamadıgınızı test edebilmeniz için sizlere verilmiştir.Çözümlerini daha sonra ekleyecegim,siz de yorumdan çözümlerinizi atabilirsiniz..

Umarım anlaşılır olmuştur.Ekteki sunuyu da inceleyebilirsiniz. Şimdilik hoşçakalın..

Arayüzler

 

HAZIRLAYAN:  GÜLBEYAZ BAYRAM

E-posta: glbzbayram@gmail.com

KAYNAK:

JAVA KİTABI

 

 

0
0

Bir cevap yazın

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