1 van 1
Polymorfisme
Geplaatst: zo 20 jan 2013, 14:58
door benno321
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
Re: Polymorfisme
Geplaatst: zo 20 jan 2013, 15:23
door Xenion
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.
Re: Polymorfisme
Geplaatst: zo 20 jan 2013, 15:28
door benno321
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?
Re: Polymorfisme
Geplaatst: zo 20 jan 2013, 15:36
door Xenion
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.
Re: Polymorfisme
Geplaatst: zo 20 jan 2013, 15:56
door Kwintendr
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.
Re: Polymorfisme
Geplaatst: zo 20 jan 2013, 15:58
door benno321
Dank u voor de antwoorden, ik snap het nu