DAHİLİ SINIFLAR(INNER CLASSES) Öğr.Gör. Murat ASLANYÜREK
DAHİLİ SINIFLARA GİRİŞ Java dilinde diğer dillerdeki gibi çoklu kalıtım yoktur. Java çoklu kalıtımı arayüz(interface) ve dahili sınıflar(inner classes) ile sağlar. Dahili sınıfları sınıf içerisinde tanımlanmış sınıf olarak belirtebiliriz. Dahili sınıflar 3 ana grupta incelenir Dahili Üye Sınıflar( static üye sınıflar, static olmayan üye sınıflar) Yerel Sınıflar İsimsiz Sınıflar
DAHİLİ ÜYE SINIFLAR Dahili üye sınıflar sınıf içersinde tanımlanmış sınıflardır. Dahili üye sınıflar sayesinde parçalar bir araya gelerek bütünü oluşturabilirler.
Not: Dahili sınıf nesnesi oluşturabilmek için üst sınıf üzerinden olur.
DAHİLİ ÜYE SINIFLAR VE ERİŞİM BELİRLEYİCİLERİ Dahili sınıfları normal sınıflar gibi erişim belirleyicileriyle nitelendirebiliriz. Böylece dahili sınıfımızı diğer sınıfımıza karşı kısıtlamış oluruz. Erişim belirleyicisi ne olursa olsun üst sınıf metodları, dahili sınıfın elamanlarına ve metodlarına erişebilir. Bkn. dahiliSinifOrnegi, s.308 Not: Eğer dahili üye sınıfımızı static olarak tanımlarsak, bu dahili sınıfın elamanlarında erişmek için anasınıf.dahilisınıf ile değilde doğrudan sınıf adı ile nesne oluştururuz. Bkn. islemYap , s.310
Not: static dahili sınıflar içerisinde ise static olan ve static olmayan her türlü metod ve değişken tanımlanabilir. Ayrıca static olan sınıflar, static metodlar gibi içinde bulunduğu sınıfın static olmayan elemanlarına erişemez. Fakat static olan alanlara erişilebilir. Not: Static olmayan üye sınıflar ise, içinde bulunduğu sınıfın static olan ve olmayan alanlarında erişebilir. Bunları static metodlar gibi düşünebiliriz. Dahili sınıf içerisinde yine bir dahili sınıf tanımlanabilir.
YEREL SINIFLAR Yerel sınıflar metod içerisinde tanımlanan sınıflardır. Yerel sınıfların kendilerini çevreleyen metodlar vardır. Yerel sınıfların en önemli özelliği sadece bu metod içerisinden erişilebilir olmasıdır. Yerel sınıflar metod dışında tanımlanan arayüzlere erişebilir. Yerel sınıflar, içerisinde bulundukları metodların sadece final olarak işaretlenmiş değişkenlerine ulaşabilirler. Yerel sınıflar erişim belirleyicilerine sahip olmazlar. Bkn. yerelSinifOrnegi, Syf. 314. Yerel sınıflar da dahili sınıflar gibi yapıcıya sahip olabilirler.