Kayaknya begini maksudnya lho... Di C++ kira - kira begini :
------------------- Class A { void lalala(){ System.out.println("lalala"); } } Class B inherit A { void lalala(){ System.out.println("lilili");} } A a = new B(); a.lalala() -> keluarnya "lalala". B b = new B(); b.lalala() -> keluarnya "lilili". ------------------- Class A { virtual void lalala()=0; } } Class B inherit A { void lalala(){ System.out.println("lilili");} } A a = new B(); a.lalala() -> keluarnya "lilili". Atau kalo kekeuh nggak mao pake virtual, bisa gini sih pake casting. ((B)(a)).lalala() -> keluarnya "lilili" juga. ------------------- Nah yang ditanyakan itu kan di Java. Di Java IMHO agak berbeda dengan virtual (yang body methodnya kosong = 0). Di Java by default kan late-binding (di C++ itu early-binding, pake virtual buat maksa dia jadi late-binding), jadi Class A { void lalala(){ System.out.println("lalala"); } } Class B inherit A { void lalala(){ System.out.println("lilili");} } A a = new B(); a.lalala() -> keluarnya "lilili". A a = new A(); a.lalala() -> keluarnya "lalala". ---> inget yang namanya Polymorphism? hehehe... ------------------- Mengapa FINAL tidak sama dengan VIRTUAL? Karena kalo pake Final, ini jadi compile error Class A { final void lalala(){ System.out.println("lalala"); } } Class B inherit A { void lalala(){ System.out.println("lilili");} } --> kagak boleh ngoverride kan. Secara basic Virtual ato bukan itu menyangkut binding (boleh koq diinherit walo gak pake virtual, tapi ya yang ngoverride ngga dijalanin kecuali dicasting, seperti contoh C++ di atas), sedangkan Final ato bukan itu menyangkut restriksi class dalam inheritance. -Kurniady 2008/8/13 imam baihaqi <[EMAIL PROTECTED]>: > --- In jug-indonesia@yahoogroups.com, "Aldian Fajri Hadi" <[EMAIL PROTECTED]> > wrote: >> >> --- In jug-indonesia@yahoogroups.com, "Sukma Agung Verdianto" >> <save.nx@> wrote: >> > >> > > >> > > >> > > setahu saya semua method java emang virtual dan gak ada yang gak >> > > virtual, CMIIW. Itu karena java berusaha untuk object oriented murni >> > > dan juga berusaha untuk simple. >> > > >> > >> > Menambahkan keyword 'final' membuat method di java jadi ga virtual >> (alias g >> > bisa di override). >> > >> >> di C++ meskipun gak virtual tetep bisa di override, tapi gak bisa >> polymorphism. Jadi saya memandang virtual dalam kaitannya dengan >> polymorphism bukan bisa gak bisa di override. >> > tapi bukannya bener jika pengen method itu ga bisa dioverride, > maksudnya method trsb selalu sama ga berubah2 ya tinggal dikasih final