baca juga : Abstraction, Encapsulation, dan Inheritance
Polimorfisme memungkinkan kita untuk melakukan satu aksi dengan hasil yang berbeda.
Misal kita punya abstract class Hewan, lalu pada class tersebut kita memiliki method bersuara(), suara hewan tentu saja tidak bisa disamakan, untuk itulah setiap class turunannya harus mendeskripsikan seperti apa hewan tersebut bersuara.
Untuk lebih mudahnya lihat dibawah ini.
Source Code Hewan
Source Code Kucing
Source Code Kambing
Source Code MainClass
Output
Pembahasan
Seperti yang dapat kita lihat, bahwa kita bisa membuat berbagai object Hewan namun dengan spesifik class, seperti Kucing, Kambing, dsb. Lalu jika kita memanggil method bersuara(), output yang dihasilkan oleh kucing dan kambing pun akan berbeda. Itulah yang dimaksud polymorphism, banyak bentuk serta dinamis, jadi jika kita ingin membuat list hewan, kita bisa membuat ArrayList<Hewan> hewanList = new ArrayList(); lalu pada list tersebut kita bisa memasukkan Kambing, Kucing, dan object lain yang merupakan inheritance dari class Hewan.Serta pada class Kucing dan Kambing terdapat dua constructor, atau dikenal dengan istilah Constructor Overloading, dengan kata lain, jika kita membuat object dengan memasukkan satu parameter string, maka code yang ada didalam constructor dengan satu parameter string tersebut yang akan dieksekusi. Tidak hanya constructor, method juga bisa di-overloading loh.
Sekian dari penulis, jika ada yang kurang jelas bisa ditanyakan lewat komentar dibawah :)