Java Inner Class
Di Java, memungkinkan kita untuk membuat class bersarang (class di dalam class). Tujuan dari class bersarang adalah untuk mengelompokkan class yang dimiliki bersama, yang membuat kode menjadi lebih mudah dibaca dan dikelola.
Untuk mengakses inner class, buat object dari outer class, lalu buat object inner class. Contoh :
class OuterClass {
int x = 10;
class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass outerSaya = new OuterClass();
OuterClass.InnerClass innerSaya = outerSaya.new InnerClass();
System.out.println(innerSaya.y + outerSaya.x);
}
}
Output :
15
Java Outer class
Tidak seperti class biasa, sebuah inner class dapat bersifat private atau protected. Jika Anda tidak ingin object luar mengakses inner class, deklarasikan sebagai private. Contoh :
class OuterClass {
int x = 10;
private class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass outerSaya = new OuterClass();
OuterClass.InnerClass innerSaya = outerSaya.new InnerClass();
System.out.println(innerSaya.y + outerSaya.x);
}
}
Jika Anda mencoba untuk mengakses sebuah private inner class dari luar class, maka akan menghasilkan error berikut :
Main.java:12: error: OuterClass.InnerClass has private access in OuterClass
OuterClass.InnerClass innerSaya = outerSaya.new InnerClass();
^
Main.java:12: error: OuterClass.InnerClass has private access in OuterClass
OuterClass.InnerClass innerSaya = outerSaya.new InnerClass();
^
2 errors
Static inner class
Sebuah inner class dapat juga bersifat static, yang berarti bahwa Anda bisa mengaksesnya tanpa harus membuat sebuah object dari outer class, Contoh :
class OuterClass {
int x = 10;
static class InnerClass {
int y = 5;
}
}
public class Main {
public static void main(String[] args) {
OuterClass.InnerClass innerSaya = new OuterClass.InnerClass();
System.out.println(innerSaya.y);
}
}
Output :
5
Sama halnya dengan atribut dan method static, sebuah static inner class tidak memiliki akses ke anggota dari outer class.
Mengakes Outer Class dari Inner Class
Salah satu keuntungan dari inner class, adalah bahwa mereka dapat mengakses atribut dan method dari outer class. Contoh :
class OuterClass {
int x = 10;
class InnerClass {
public int methodInnerSaya() {
return x;
}
}
}
public class Main {
public static void main(String[] args) {
OuterClass outerSaya = new OuterClass();
OuterClass.InnerClass innerSaya = outerSaya.new InnerClass();
System.out.println(innerSaya.methodInnerSaya());
}
}
Output :
10
Tutorial sebelumnya : Contoh Polimorfisme Java
Tutorial setelahnya : Java Abstraction
Semua Tutorial JAVA : Tutorial JAVA