Polymorfisme

Moderators: jkien, Xilvo

Reageer
Berichten: 39

Polymorfisme

Zou iemand mij polymorfisme eens kunnen uitleggen, want op internet heb ik gezocht maar ik begrijp het nog altijd niet. Met polymorfisme bedoel ik polymorfisme dat wordt gebruikt bij java met overerving.

Alvast bedankt

benno321

Gebruikersavatar
Berichten: 2.609

Re: Polymorfisme

Kijk eens naar het voorbeeld op wikipedia.

Je hebt een klasse Animal die heel algemene eigenschappen en acties van een dier kan beschrijven. Er is een methode talk(), maar elk dier zegt natuurlijk iets anders.

In OO is het mooi om voor verschillende dieren een subklasse aan te maken. Je maakt dan voor katten en honden klasses aan die Animal extenden. Je kan dan in beide klassen de talk() methode overloaden zodat katten "Miauw" printen en honden "Woef".

Op die manier kan je dieren heel algemeen behandelen. Stel dat je een Persoon klasse hebt en een persoon kan een lijst van huisdieren hebben. Dat is een object van het type List<Animal>. Daar kunnen dan zowel katten als honden inzitten en afhankelijk van welk huisdier je aanspreekt zal de talk() methode een ander resultaat geven.

Een ander voorbeeld. Beschouw een inventory in een computerspelletje. Alle dingen in een inventory kunnen geïmplementeerd zijn als een klasse Item. Daar zijn dan een aantal gemeenschappelijke dingen zoals 'Drop' en 'Sell' ofzo, maar veel items hebben ook een 'Use' actie. Een zwaard en een health potion droppen doet hetzelfde, maar de use actie van beide moet uiteraard verschillend zijn.

Berichten: 39

Re: Polymorfisme

Ik dacht dat hetgeen waar je het nu over hebt dynamische binding noemt.

Wat is dan dynamische binding en het verschil tussen polymorfisme en dynamische binding?

Gebruikersavatar
Berichten: 2.609

Re: Polymorfisme

Polymorfisme is het concept dat je gelijkaardige objecten kan behandelen met een zelfde interface. Dynamic binding is het mechanisme dat dit mogelijk maakt. Bij compile time kan je op geen enkele manier weten welke subklasse van dier je aan het gebruiken bent. Dynamic binding zal at runtime de juiste methode opzoeken afhankelijk van het object type.

Gebruikersavatar
Berichten: 768

Re: Polymorfisme

Onder polymorfisme verstaan we algemeen het feit dat verschillende eintiteiten toch eenzelfde naam kunnen hebben, omdat ze een zekere (zij het soms abstracte) verwantschap vertonen. Je kan in JAVA verschillende vormen van polymorfisme beschouwen:

-) polymorfisme tussen klassen:

actie- en gegevenselementen kunnen in verschillende klassen een identieke naam krijgen. Een voorbeeld is een toString methode in een klasse. Je kan in verschillende klassen een toString methode hebben, en allemaal hebben ze dezelfde naam, hoewel ze toch een andere uitvoer geven.

-) polymorfisme tussen een klasse en zin afgeleide klasse:

Hierbij denken we dan een methode-pverschijven. Dit laat toe in een afgeleide klassen een taak nauwkeuriger en concreter te beschrijven dan in de superklasse het geval is.
Het Wetenschapsforum heeft ook een facebook pagina!

Berichten: 39

Re: Polymorfisme

Dank u voor de antwoorden, ik snap het nu

Reageer