Polymorphism, overriding methods dan hiding methods pada Java Programming Language

Setelah saya melihat-lihat lagi tutorial di Oracle’s Java Tutorial, saya sedikit bingung soal polymorphism dan overriding & hiding methods pada pemrograman bahasa Java. Namun setelah saya coba-coba sendiri, kira-kira saya mendapat pengertian yang lebih perihal ketiganya ini. Semoga pengertian ini adalah benar. Bila ada teman-teman yang lebih tahu soal pemrograman bahasa Java, tolong saya dikoreksi bila ada yang salah. Untuk tulisan lengkapnya bisa dilihat disini.

Kesimpulan yang saya ambil:

Dari hasil yang kita peroleh di atas, dapat kita simpulkan sebagai berikut:
1)    Perihal polymorphisme:
        a)    Variable a dan c adalah tipe Alfabet dan juga Huruf. NAMUN, compiler mengetahui a dan c sebagai tipe Alfabet. Oleh karena itu ketika static (class) method dari masing-masing object a dan c dipanggil, yang dieksekusi adalah static method milik Alfabet, bukan Huruf. Hal ini dikarenakan pada saat compiling, pemanggilan method cetak2() dari a dan b dirubah menjadi Alfabet.cetak2() pada kedua kasusnya. Hal ini tentunya bertentangan dengan hasil running pada saat kita letakkan break point di atas yang menyatakan bahwa variable a dan c adalah tipe Huruf.
        b)    Variable a dan c memiliki tipe baik Alfabet maupun Huruf. Namun perlu diperhatikan bahwa setiap Huruf adalah Alfabet, namun setiap Alfabet belum tentu Huruf. Sehingga, kita tidak bisa menuliskan seperti di bawah ini karena compiler mengetahuinya bahwa c adalah tipe Alfabet sedangkan d adalah Huruf, tanpa mengetahui tipe setelah runtime.
polymorphism
        c)    Alfabet a = new Huruf() akan selalu memanggil constructor Huruf(). Ini adalah ketentuan baku syntax new yang menyatakan bahwa new membutuhkan postfix argument berupa constructor. Sehingga, walaupun ada tipe Alfabet pada pernyataan ini, namun yang dijalankan adalah constructor yang menjadi argument dari new, dalam hal ini constructor milik class Huruf.
2)    Perihal overriding dan hiding methods:
        Seperti pada tulisan sebelumnya dinyatakan bahwa pada overriden methods, yang dipanggil selalu adalah milik subclass. Hal ini sesuai dengan syntax yang kita gunakan juga, yakni misalnya c.cetak(). Pada hidden methods, yang dipanggil tergantung siapa yang memanggil. Sebagai static method, pemanggilannya harus disertakan class yang dimaksud, yakni Alfabet.cetak2() atau Huruf.cetak2(). Oleh karenanya hasil yang diberikan adalah sesuai dengan definisi method dari class yang dipanggil.
Sekali lagi, mohon kesediaan teman-teman yang mengerti untuk mengoreksi pengertian saya. Terima kasih.🙂

~ by Rod on June 11, 2012.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: