Polimorphisme adalah kemampuan dari sebuah ojectuntuk memperbolehkan mengambil beberapa bentuk yang berbeda.Secara harafiah,"poli" berarti banyak sementara "morph" berarti bentuk.Menunjuk pada contoh sebelumnya pada pewarisan,kita lihat bahwa object SuperHero dapat juga menjadi object flayingSuperHero atau object UnderwaterSuperHero.
• Inheritance dan overriding menyebabkan munculnya polymorphism (literally ‘banyak bentuk’) – salah satu ciri dan kelebihan dari object-oriented programming.
• Cow adalah subclass dari Animal, maka pemrogram dapat merujuk ke obyek Cow sebagai Animal atau Cow. Kedua pernyataan berikut benar:
– Cow daisy = new Cow();
– Animal daisy = new Cow();
• Mengapa? Karena Cow adalah subclass dari Animal (Cow adalah a kind of Animal), maka Cow mempunyai fungsionalitas dari superclassnya.
• Baris berikut salah:
– Cow daisy = new Animal(); // SALAH
• Mengapa? Cow mungkin mempunyai fungionalitas tambahan yang tidak diimplementasikan dalam superclass Animal (Animal bukan a kind of Cow).
– public class FarmExample {
• public static void main(String[] args) {
– Animal[] farm = {new Cow(), new Pig(),
new Sheep()};
– System.out.println("The animals say:");
– for (int i=0; i
– farm[i].talk();
• }
– }
• Keluaran dari program ini adalah
– The animals say:
– Moo!
– Grunt!
– Baa!
• Ada dua prinsip yang mendasari polymorphism:
– An object always retains the identity of the class from which it was created.
– When a method is invoked on an object, the method associated with the class of the object is always used.
• Keputusan mengenai metode mana yang akan dipanggil tidak dapat ditentukan oleh compiler; tetapi ditentukan saat run time. Java menggunakan dynamic binding bukan static binding.
• Contoh, Menghitung total berat semua hewan pada lahan peternakan:
• Konstruksi suatu obyek diawali oleh konstruksi obyek superclass (melalui constructor); perilaku contructor superclass dapat dipanggil dan dilengkapi fungsinya dengan perintah super() di dalam constructor subclass.
• Polymorphism mengacu kepada kemampuan untuk menjalankan suatu metode bergantung pada class obyek.
• Java menerapkan dynamic binding untuk memutuskan metode mana yang dijalankan saat runtime.
• Polymorphism memungkinkan koleksi heterogen diperlakukan secara seragam.
• Casting kadang diperlukan untuk memastikan bahwa metode yang tepat akan dijalankan saat run time.
Minggu, 03 Januari 2010
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar