Polymorphism ("go leor foirmeacha") a bhíonn ar dheis ag comhéadan amháin a oibriú le cineálacha difriúla faoin bhonnt. Ritheann an glaoch céanna cód difriúil ag brath ar an réad iarbhír — roghnaithe ag fhéachaint fadaimseartha. Seo an polymorphism subtype.
Glaoch amháin, iompar go leor
class Animal { String speak() { return "..."; } }
class Dog extends Animal { String speak() { return "Woof"; } }
class Cat extends Animal { String speak() { return "Meow"; } }
Animal[] zoo = { new Dog(), new Cat() };
for (Animal a : zoo) {
System.out.println(a.speak()); // Woof, then Meow
} // same call, different result per type
Glaonn an lúp a.speak() gan a bheith i ngrá cé acu ainmhí a bhí ann — soláthraíonn an fhéachaint an fhorkódú ceart.
Cén fáth atá sé cumhachtach
Is féidir leat subtype Animal nua a bhreisiú níos déanaí, agus leanann an lúp thuas ag feidhmiú le nulla athruithe. Braitheann cód ar an chineál teibí, ní ar ranganna nó-fhíor.
caller → Animal.speak() ──dispatch──▶ Dog.speak() OR Cat.speak()
(one interface) (many implementations)
Puiteach
Ná meascfaidh tú le overloading (ainm modh ar an gcéanna, paraiméadair difriúil, réitithe ag am bailí). Tá fíor (subtype) polymorphism réitithe ag am fhéachaint bunaithe ar an réad.
Cén fáth atá sé ríthábhachtach
Polymorphism is a dhéanann OOP síneadh: tagann iompar nua mar rang nua, ní mar eagrúchán scaptha i slabhraí if/else.
Seo an méchanism taobh thiar den Phrionsabal Oscailte/Dhúnta agus an chuid ba mhó de na patrúin dhearaidh — is clár a dhéanann tú go comhéadan agus ligim do fhéachaint fadaimseartha an chur i bhfeidhm a roghnú.
