Hallo, ik heb het volgende probleem.
Ik heb een klasse die een array bevat met daarin andere klassen.
De opbouw is ongeveer zo:
Component
----Button
----Select
----TextField
----Checkbox
ComponentCollection
----methode: add(Component c)
Hiermee bedoel ik dat de klassen Button, Select, TextField en Checkbox de klasse Component extenden.
De klasse ComponentCollection bevat een methode die alleen als parameter objecten accepteert die van het type Component zijn.
Je zorgt zo ervoor dat er alleen maar klassen in kunnen worden gedaan met add() als ze een Component zijn.
Als ik nu in de klasse ComponentCollection iets wil doen met de toegevoegde Component, dan kan ik dus alleen de methodes gebruiken die in de Component klasse worden gedefinieerd. Ik kan dus wel een Button meegeven aan ComponentCollection, maar ComponentCollection kan niets doen met de Button klasse, hij kan alleen iets doen met de Component klasse die Button overerft.
Toch wil ik de methodes van Button kunnen bereiken. Is hier een manier voor?
Ik heb het hier niet over een interface, ookal zou je Button bijvoorbeeld een interface geven, de methode van Button die je wil bereiken heb je er al in staan. Een interface zou je kunnen maken, maar daar los je nu niks mee op. Dit is een overervings kwestie.
Als jullie niet begrijpen wat ik bedoel, dan moet ik het misschien nog wat beter uitleggen.
1.048 views