Java Inner Class Kullanımı ve Örnekleri
Java inner class nedir? Yada benzer yapıyı tanımlamak için kullanılan tabiriyle Java Nested Class Nedir? (Java İç İçe sınıflar) Java derslerinin bu yazısında farklı bir tür class, sınıf yapısından bahsedeceğiz. Inner class yada iç içe class diyebileceğimiz bu yapıda bir java sınıfının içerisine başka bir sınıf gelmektedir. Bu yapının neden gerekli olduğuna ve ne işe yaradığına öncelikli olarak bakacağız. Java Inner class kullanımına kısaca değindikten sonra, java inner class örnekleri vererek konuyu pekiştireceğiz. Java Inner class konu anlatımı, inner class özellikleri.
Java Inner Class Nedir?
Java programlama dilinde 2 java sınıfının iç içe gelme durumuna java nested class yani iç içe sınıflar yada java inner class yani dahili sınıflar denilmektedir. Yazılan java programlarında sık sık kullanılan inner class yapısını bir bütünün parçaları olarak da düşünebiliriz.
Inner class yapısına neden gerek var? Neden bir sınıfı alıp başka bir sınıfın içerisine koyuyoruz? Şurası kesindir ki inner class yapısı kullanmadan da bütün işlerimizi halledebiliriz. Ancak kodun hem yazımının kolaylaşması hem de okunabilirliğin artması için bu yapı kullanılmaktadır.
Yani bir kütüphane sistemi oluşturduğumuzu düşünelim. Bu sistemde her bir yazar için ayrı bir sınıf oluşturmanız gereksin. Bu sınıflar için yeni bir java dosyası oluşturup kodları yazmak yerine var olan kütüphane sınıfının içerisine yazarlara ait sınıflar oluşturursak hem yazacağımız kod direk olarak azalır hem okunabilirlik artık bunların hepsi tek dosyada olduğu için artar.
Java’da inner class yapısı aynı zamanda kalıtımı sağlamak için de kullanılır. Yukarıdaki kütüphane örneği de buna iyi bir örnek oluşturmaktadır. Şimdi java inner class örneklerine geçelim.
Yukarıda bahsettiğimiz kütüphane yapısını java inner class kullanarak yapalım.
Java Inner Class Kullanımı
1 2 3 4 5 6 7 8 9 10 |
public class Kütüphane { public class Dostoyevski{ public void kendiniTanıt(){ System.out.print("Merhaba ben Fyodor Mihayloviç Dostoyevski."); } } } |
Öncelikle kütüphane isminde bir java class oluşturduk ve içerisine bir tane daha Dostoyevski isminde java class oluşturduk. Bu inner class içerisinde kendini tanıt isimli bir java metot yarattık. Java’da bir inner class yapısı oluşturmak bu kadar basittir. Şimdi gelelim bu java inner classı nasıl
kullanacağımıza.
1 2 3 4 5 6 7 8 |
public class Main { // Java Inner Class Örnekleri public static void main (String[] args) { Kütüphane kütüphane = new Kütüphane(); Kütüphane.Dostoyevski dostoyevski = kütüphane.new Dostoyevski(); dostoyevski.kendiniTanıt(); } } |
Bir main sınıfı ve içerisine de bir adet main metodu oluşturduk. Öncelikle java nested class yapısında dışta yer alan Kütüphane sınıfının bir objesini oluşturuyoruz. Daha sonra bu obje içerisinde yer alan Dostoyevski sınıfına “.” işareti kullanarak erişiyoruz. Eşitliğin diğer tarafı şimdiye kadar ki obje tanımlamalarımızdan biraz daha farklı. Oluşturduğumuz kütüphane objesinden sonra “.new” kullanıp oluşturmak istediğimiz sınıfı yazıyoruz. Sonrasında ise bu sınıf içerisindeki bir metodu Dostyoveski sınıfının üst sınıfını kullanmadan çağırabiliriz.
Ekran Çıktısı:
Java Inner Class Örnekleri
Java Inner Class Örneği (Nested Class): Şimdi örneğimizi genişletelim ve Java’da inner class (nested class) kullanımını daha iyi anlayalım.
Kütüphane Sınıfı:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import java.util.ArrayList; public class Kütüphane { public class Dostoyevski{ ArrayList<Kitap> dKitap = new ArrayList<Kitap>(); public Dostoyevski(){ dKitap.add(new Kitap("Suç ve Ceza", 800)); dKitap.add(new Kitap("Ecinniler",700)); } public void kendiniTanıt(){ System.out.println("Merhaba ben Fyodor Mihayloviç Dostoyevski. Benim kitaplarım : " + dKitap.toString()); } } public class Nietzsche{ ArrayList<Kitap> nKitap = new ArrayList<>(); public Nietzsche(){ nKitap.add(new Kitap("Böyle Buyurdu Zerdüşt",300)); nKitap.add(new Kitap("Ecce Homo",120)); } public void kendiniTanıt(){ System.out.println("Merhaba ben Friedrich Nietzsche. Benim kitaplarım : " + nKitap.toString()); } } public class Popper{ ArrayList<Kitap> pKitap = new ArrayList<>(); public Popper(){ pKitap.add(new Kitap("Bilimsel Araştırmanın Mantığı",600)); pKitap.add(new Kitap("Yüzyılın Dersi",130)); } public void kendiniTanıt(){ System.out.println("Merhaba ben Karl Popper. Benim kitaplarım : " + pKitap.toString()); } } } |
Daha önceden kütüphane isimli java sınıfımızda bir adet inner class vardı, şimdi ise 3 adet var. Bu şekilde istediğiniz kadar inner class ekleyebilirsiniz. Bu 3 iç içe sınıfımızın her birinde o yazarın kitaplarını içerecek olan bir ArrayList objesi oluşturduk. Daha sonra bu sınıfların constructor metotları içeriisnde bu ArrayList objelerine kitap objelerini ekledik.
Son olarak ise bu sınıflara birer kendini tanıt java metodu ekleyerek yazarların isimlerini ve kitaplarını yazdırdık. Bu şekilde aslında javada bir inheritance (kalıtım) yapısını inner class yapıları yardımı ile sağlamış olduk. Şimdi java Kitap sınıfına bakalım.
Kitap Sınıfı:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class Kitap { private String isim; private int sayfa; public Kitap(String isim, int sayfa){ this.isim = isim; this.sayfa = sayfa; } public String toString(){ String kitap = this.getIsim() + " - " + this.getSayfa(); return kitap; } public String getIsim() { return isim; } public int getSayfa() { return sayfa; } } |
Oluşturduğumuz kitap isimli java sınıfının yapısı oldukça basit. Bu sınıfta bir isim birde sayfa değişkeni var.
İsim ve sayfa değişkenleri için get metotları ve bir adette toString( ) metodumuz bulunmakta. Bu metot kitapların isimlerini ve sayfa sayılarını yazdırmada işimize yarayacak.
Bir önceki java nested class örneğinde olduğu gibi bir main sınıfı ve main metodu oluşturup yarattığımız bu sınıfların objelerini oluşturarak kullanımlarına göz atalım.
Main Sınıfı:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class Main { // Java Inner Class Örnekleri public static void main (String[] args) { Kütüphane kütüphane = new Kütüphane(); Kütüphane.Dostoyevski dostoyevski = kütüphane.new Dostoyevski(); Kütüphane.Nietzsche nietzsche = kütüphane.new Nietzsche(); Kütüphane.Popper popper = kütüphane.new Popper(); dostoyevski.kendiniTanıt(); nietzsche.kendiniTanıt(); popper.kendiniTanıt(); } } |
Main metodumuz içerisinde Kütüphane sınıfının bir objesini oluşturduk. Daha sonra kütüphane sınıfı içerisinde yer alan inner class yapısındaki sınıflardan birer obje oluştur. Burada bu objelere üst sınıf olan Kütüphane üzerinden eriştiğimize dikkat edin. Son olarak ise oluşturduğumuz inner class yapılarına ait objelerin içerisindeki kendini tanıt metotlarını çağırdık.
Ekran Çıktısı:
Ekran görüntüsünde bütün sonuçların beklediğimiz gibi çıktığını görebilirsiniz. Bu şekilde sizde java projelerinizde inner class yapıları ile inheritance yani birer kalıtım kurup kodlarınızın yazımını ve okunabilirliğini arttırabilirsiniz.
Java inner class kullanımı ile ilgili ve bu yazıda geçen bütün bilgiler ve inner class örnekleri ile ilgili bütün sorularınızı yorum olarak bırakabilirsiniz. Diğer java dersleri.
“Java Inner Class Kullanımı ve Örnekleri” adlı bu makaleyi faydalı bulduysanız lütfen yorum yapmayı ve paylaşmayı unutmayın.
java dersleri içerisinde en merak ettiğim Java Inner Class Kullanımı ve açıklayıcı örnekleriydi sonunda geldi teşşekkürler
Java inner class kullanımı çok da basit anlaşılabilen bir konu değil. O yüzden verdiğiniz açıklamalı örneklerin büyük faydası oldu.
Yorumunuz için teşekkürler.
Java Inner class kullanımını az çok biliyordum. Tabi bir yerde yanlış yapıp duruyordum. Sayenizde onu da çözdüm. Emeğinize sağlık.
Java Inner Class örneklerinin aynısını sonunda kendim de yapabildim çok uğraştırdı ama oldu sonunda