Polymorphism

Status
Niet open voor verdere reacties.

Clemens Schalkw

Gebruiker
Lid geworden
5 dec 2007
Berichten
166
Ik ben opzoek naar het grote nut en duidelijke uitleg van Polymorphism.

Animal myDog = new Dog();

Zover kom ik. Ik zie ook wel dat dat grappig kan zijn, maar het grote nut zie ik er niet van.
Tuurlijk is het handig om met polymorphism arrays te werken, maar dan nog snap ik niet dat programmeurs daar zo warm van draaien.

Code:
Animal[] animals = new Animal[3];

animals[0] = new Dog();
animals[1] = new Cat();
animals[2] = new Mouse();
 
In jouw voorbeeld kan je in de klasse Animal een loopMethode definiëren, die dan apart wordt uitgewerkt voor een koe, schaap, kat, hond, kangoeroe.

Het voordeel daarvan is dat je niet enkel alle dieren in 1 array kan opslaan, maar ze ook allemaal tegelijk kan laten lopen, elk op hun eigen manier.
 
Ik snap inderdaad wat het nut ervan is.
Nu zit ik met hetvolgende.
concrete vs abstract.

Ik begrijp het nut van abstracte classes (zeer waarschijnlijk een interface), maar snap niet helemaal waarom het van belang is om geen object van de class te kunnen maken (dit snap ik), maar wel als reference-type gebruikt kan worden.
Komt dit op hetvolgende neer en zo ja, wat is daar het nut van?

Code:
abstract class Hond extends Dier {
		// hier alle methods en variabelen enz.
	}
		Hond hond = new Hond();  // dit is dus niet mogelijk.
                Hond x = new Dier(); // hier wordt de class Hond alleen gebruikt als reference-type

Verder kom ik er ook niet helemaal uit wat het nut is van abstracte methods.
Ik begrijp dat je in je interface (bijvoorbeeld) vast (waarschijnlijk te gebruiken) methods aanmaakt om het geheel leesbaar te houden, maar is dat het enige nut ervan?
 
Het maakt meer zin als je de klasses in jouw voorbeeld van plaats wisselt.
Een ander voorbeeldje: Ik werk momenteel aan een RPG, wat een weaponclass is (de abstracte). Dan zijn er aantal subclasses zoals, zwaard/boog, die allemaal de aanval-methode van weapon overnemen.
Aangezien een RPG een groot project is, werken wij daar met meerdere personen aan. Door de weaponclass abstract te maken, kan ik ervoor zorgen dat diegene die de spelerklasse maakt, die speler wel een wapen kan geven (van het type weapon), maar dat er bij die speler nooit een nieuw wapen kan aangemaakt worden, tenzij het expliciet een zwaard/boog is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan