Senin, 12 Maret 2012

Anonymous Class

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:

Tidak ada komentar:

Posting Komentar