Anonymous inner class adalah suatu inner class yang dideklarasikan tanpa nama kelas.
Anonymous inner class pasti adalah salah satu dari 2 hal berikut :
1. Subclass dari suatu class yang telah dideklarasikan
2. Kelas implementasi dari suatu interface
· Suatu anonymous inner class tidak dapat secara bersamaan menjadi
subclass dari class yang telah dideklarasikan dan juga sebagai kelas implementasi
dari suatu interface.
· Tujuan utama dari anonymous inner class adalah mengoverride satu
atau lebih method dari super classnya atau mengimplement semua method
dari suatu interface.
abstract class itu adalah class yang hanya berisi metode atau interface
yang dideklarasikan. Implementasinya di luar dari class itu. Hampir sama
seperti interface, tapi interface bukan termasuk abstract class.
contoh :
abstract class ClassKu{
public void method1();
}
untuk buat instance dari ClassKu kita harus buat class turunannya dulu yang mengimplementasi method1 seperti ini:
public class AnakClassKu extends ClassKu{
public void method1(){
System.out.println("Method 1 choy");
}
baru kita bisa buat instancenya seperti ini:
public class Tester{
public static void main(String[] args){
ClassKu obj = new AnakClassKu();
// atau
// AnakClassKu obj = new AnakClassKu();
obj.method1();
}
}
sampai sini, cara diatas juga bisa digantikan dengan yang namanya Anonymous class.
seperti ini:
public class Tester{
public static void main(String[] args){
ClassKu obj = new ClassKu(){
public void method1(){
System.out.println("method 1 choy");
}
}
obj.method1();
}
}
jadi dengan Anonymous class kita bisa langsung buat instance dari class
abstract (ClassKu) tanpa membuat class turunannya dulu..,dengan catatan
pada saat kita membuat instancenya kita harus menyertakan implementasi
dari method-method class abstract.
atau contoh anonymous inner class sebagai cubclass :
code:
class A {
int i = 10;
void lakukanSesuatu() {
i--;
System.out.println("i = " + i);
}
}
public class BelajarAnonymous1 { //1
public static void main(String[] args) { //2
A a = new A() { //3
void lakukanSesuatu() { //4
i++;
System.out.println("i = " + i);
} //4
}; //3
a.lakukanSesuatu();
} //2
} //1
dan outputnya akan seperti dibawah ini: