bugün

örnekle açıklamak iyi olur.

Hayvan ve Kus diye iki sınıf olsun.
Kus sınıfı Hayvan sınıfını extends etsin. (java anahtar kelimelerine göre konuşuyorum)

Hayvan heyvan=new Kus("muhabbet kuşu");

diyebilmek polymorphism sayesindedir.

ayrıca polymorphism için overloading ve overriding önemli kavramlardır.
(bkz: nesneye yönelik programlama)
lat. çoklu şekil veya çok şekilli.
genelde structural programlamayla bu işler başlanıldığı için pekte kullanılmayan bir uzuvdur. Amatör projelerde yeni bir class oluşturup inherit edeceğiniz class a ait methodları, değişkenleri aynen taşırsınız olur biter ama etkili kullanabilenleri gördükçe insanı mutlu eder.
türkçeye çok şekillilik olarak çevrilebilecek yazılım terimidir.

nesne yönelimli programlama dillerinde, aynı isme sahip bir unsurun farklı içerik ve işlevlerle kullanılabilmesidir.

aynı isimli virtual bir method farklı classlar için değişen işlevlerle kullanılırsa (overriding) bu dynamic polymorphisme; aynı method farklı parametre kombinasyonları ile kullanılırsa (overloading) static polymorphisme örnektir.