Banner Java

Kelas Tersarang (Nested Class) Di Pemrograman Java

Bahasa pemrograman Java memperbolehkan untuk mendefinisikan sebuah kelas di dalam kelas lain. Kelas semacam ini disebut dengan kelas tersarang (nested class). Berikut ini adalah ilustrasi dari kelas tersarang:

   class KelasLuar {
      …
      class KelasTersarang {
         …
      }
   }

Anda juga dapat mendeklarasikan kelas tersarang dengan menggunakan modifier public, protected, private dan static. Berikut ini adalah ilustrasi kelas tersarang yang dideklarasikan dengan modifier static:

   class KelasLuar {
      …
      static class KelasTersarangStatik {
         …
      }
      class KelasTersarang {
         …
      }
   }

Contoh program untuk memahami kelas tersarang di Java ini terdiri dari dua kelas yaitu KelasLuar dan DemoKelasLuar. Kelas KelasLuar adalah kode sumber Java (Java source code) yang merupakan cetak biru yang digunakan untuk membuat obyek Java, sedangkan kelas DemoKelasLuar merupakan kelas yang digunakan untuk menguji kelas KelasLuar. Kedua kelas Java tersebut dimaksudkan untuk memberikan gambaran lebih jelas bagaimana sebuah kelas dapat didefinisikan di dalam kelas yang lain. Kelas DemoKelasLuar akan menampilkan string melalui pemanggilan metoda baik yang terletak di kelas luar (KelasLuar) maupun yang terletak di kelas tersarang (KelasDalam).

Kelas KelasLuar.

// Nama file : KelasLuar.java
// Mendemonstrasikan kelas di dalam kelas

// Mendefinisikan KelasLuar
public class KelasLuar {
 
   private String sl = "String di KelasLuar";
   KelasDalam kd = new KelasDalam();

   // Metoda di KelasLuar
   public void getSl() {
      System.out.println(sl);
   }

   public void getStrKelasDalam() {
      System.out.println(kd.sd);
   }

   // Deklarasi KelasDalam
   public class KelasDalam {
       
      private String sd = "String di KelasDalam";

      // Metoda di Kelasdalam
      public void getSd() {
         System.out.println(sd);
      }

      public void getStrKelasLuar() {
         System.out.println(sl);
      }
   }
}

Kelas DemoKelasLuar.

// Nama file : DemoKelasLuar.java
// Mendemonstrasikan kelas di dalam kelas

// Deklarasi kelas
public class DemoKelasLuar {

   public static void main(String[ ] args) {

      System.out.println();
      KelasLuar kl = new KelasLuar();
      KelasLuar.KelasDalam kd = kl.new KelasDalam();
      kl.getSl();
      kd.getSd();
      kl.getStrKelasDalam();
      kd.getStrKelasLuar();
  
   }
}

Dari dua kode program di atas, dapat dijelaskan bahwa kelas tersarang atau nested class (kelas KelasDalam) dapat mengacu (mengakses) data field maupun metoda yang berada di kelas luar (kelas KelasLuar) sebagaimana pernyataan pada baris nomor 30 dari kode program kelas KelasLuar. Sedangkan kelas luar, dapat mengacu (mengakses) data field maupun metoda dari kelas tersarang (nested class) dengan menggunakan variabel yang mengacu ke obyek dari kelas tersarang tersebut (baris nomor 16 dari kode program kelas KelasLuar).

Apabila dikompilasi, kode program kelas KelasLuar akan menghasilkan dua buah file bytecode (berekstensi .class). KelasLuar$KelasDalam.class merupakan file bytecode untuk kelas tersarang. Karena fungsi kelas tersarang sebenarnya adalah mendukung kerja kelas luar, maka kelas tersarang tersebut akan dikompilasi menjadi file bytecode dengan format NamaKelasLuar$NamaKelasTersarang.

Kelas tersarang yang dideklarasikan menggunakan modifier static hanya dapat mengakses data field dan metoda (member) dari kelas luar yang dideklarasikan dengan modifier static. Kelas tersarang yang tidak dideklarasikan dengan modifier static dapat mengacu (mengakses) data field dan metoda baik yang dideklarasikan dengan modifier static maupun tidak (nonstatic modifier).

Kelas tersarang (nested class) di Java

Untuk memperbaiki mutu konten, Anda dapat berpartisipasi dengan cara melaporkan apabila menemukan kesalahan ketik, kata-kata rangkap, redaksi kurang pas (jelas), gambar pendukung tidak ada dan sebagainya melalui form Kontak Kami untuk mendapatkan perbaikan. Terima kasih atas kerjasamanya.

Hindro HindriantoHindro adalah pendiri sekaligus admin termasmedia.com dan topikit.com, blog online yang mengulas teknologi informasi. Dunia web mulai ditekuni tahun 2012 dengan mempelajari CMS Joomla dan Wordpress. Beberapa buku yang sekarang dipelajari antara lain PHP, HTML5, ASP.NET 4.5, JavaScript, CSS3, MySQL, Adobe Dreamweaver, Adobe Photoshop dan Adobe Flash.