class KelasTerluarA {
private String pesan = "Objek dari KelasTerluarA ";
//Method konstruktor untuk kelas KelasTerluarA
KelasTerluarA(String noObjek) {
pesan = pesan + noObjek;
}
//Method cetak pesan yang dimiliki oleh kelas KelasTerluarA
public void cetakPesan() {
System.out.println(pesan);
}
//Kelas Inner tingkat pertama
class KelasInnerB {
private String pesan = "Objek dari KelasInnerB ";
//Method konstruktor untuk kelas KelasInnerB
KelasInnerB(String noObjek) {
pesan = pesan + noObjek;
}
//Method cetak pesan yang dimiliki oleh KelasInnerB
public void cetakPesan() {
System.out.println(pesan);
}
//Kelas Inner tingkat kedua
class KelasInnerC {
private String pesan = "Objek dari KelasInnerC ";
KelasInnerC(String noObjek) {
pesan = pesan + noObjek;
}
//Method cetak pesan yang dimiliki oleh KelasInnerC
public void cetakPesan() {
/** cetakPesan yang dimiliki oleh KelasInnerC */
System.out.println(pesan);
System.out.println(this.pesan);
System.out.println(KelasInnerC.this.pesan);
/** cetakPesan dari variabel yang dimiliki
oleh objek dari KelasInnerB */
System.out.println(KelasInnerB.this.pesan);
KelasInnerB.this.cetakPesan();
/** cetakPesan dari variabel yang dimiliki
oleh objek dari KelasInnerA */
System.out.println(KelasTerluarA.this.pesan);
KelasTerluarA.this.cetakPesan();
System.out.println("\n");
}
}
}
}
public class DemoKelasInner {
/**Main Method*/
public static void main(String args[]) {
/**
* Mengakses method cetakPesan yang dimiliki oleh
* KelasInnerC yang tersarang pada KelasTerluarA dan
* KelasInnerB -- A(B(C)) dengan membuat objekKelasA ->
* objekKelasB -> objekKelasC.namaMethod
*/
KelasTerluarA a = new KelasTerluarA("Cara 1");
KelasTerluarA.KelasInnerB b = a.new KelasInnerB("Cara 1");
KelasTerluarA.KelasInnerB.KelasInnerC c =
b.new KelasInnerC("Cara 1");
c.cetakPesan();
/**
* Mengakses method cetakPesan yang dimiliki oleh
* KelasInnerC yang tersarang pada KelasTerluarA dan
* KelasInnerB -- A(B(C)) dengan membuat objekKelasB ->
* objekKelasC.namaMethod
*/
KelasTerluarA.KelasInnerB bb = new
KelasTerluarA("Cara 2").new KelasInnerB("Cara 2");
KelasTerluarA.KelasInnerB.KelasInnerC cc =
bb.new KelasInnerC("Cara 2");
cc.cetakPesan();
/**
* Mengakses method cetakPesan yang dimiliki oleh
* KelasInnerC yang tersarang pada KelasTerluarA dan
* KelasInnerB -- A(B(C)) dengan membuat
* objekKelasC.namaMethod
*/
KelasTerluarA.KelasInnerB.KelasInnerC ccc = new
KelasTerluarA("Cara 3").new KelasInnerB("Cara 3").new
KelasInnerC("Cara 3");
ccc.cetakPesan();
}
}
Post a Comment