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

Kirim email ke