Waarom niet? Stel dat je wel weet hoe er gestart en gestopt wordt, dan is dat toch geen probleem?Raga schreef:Je weet inderdaad niet HOE ze precies starten en stoppen.
Maar het idee is dat je dat ook niet wilt/mag weten;
Heb je misschien een stukje code waarin naar voren komt dat een interface in die betreffende situatie handiger is dan een superklasse?Het is moeilijk om dit eigenlijk zomaar uit te leggen, je moet dit echt kunnen zien in bepaalde code waaruit duidelijk naar voor komt dat een interface op momenten heel handig kan zijn.
Een stukje code heb ik niet echt. Interfaces worden meestal enkel gebruikt in de iets grotere projecten en ik denk niet dat je daardoor direct een stuk wijzer wordt.Heb je misschien een stukje code waarin naar voren komt dat een interface in die betreffende situatie handiger is dan een superklasse?
Een superklasse is enkel handig zoals je zelf aanhaalt wanneer je bepaalde functies kan implementeren die alle afgeleide klassen zeker ook zullen hebben en die altijd op dezelfde manier geprogrammeerd zal zijn. Echter komt dit niet zo heel vaak voor. Vaak kom je te zitten met klassen die allemaal wel op mekaar gelijken, maar niet op dezelfde manier werken. Op dat moment kan je geen superklasse meer maken die op zichzelf kan bestaan.Zoals ik het nu zie, krijg ik de indruk dat je beter maar helemaal geen gebruik meer moet maken van een superklasse, maar beter om voortaan van een interface gebruik te maken. Hoewel, stel dat een methode 'Start()' voor alle subklasses op dezelfde manier geimplementeerd wordt, dan is een superklasse weer handig, want om nou hetzelfde stukje code (nl. die van de methode 'Start()') bij alle subklasses te plaatsen is ook een beetje overdreven. Maar in alle andere gevallen kun je dus beter gebruik maken van interfaces?
Code: Selecteer alles
Interface voertuig {
void Start();
void Stop();
boolean persoonAanwezig();
}
Code: Selecteer alles
Class tandwielAangedreven implements voertuig {
void Start() {
// ga op de trappers staan en draai ze rond
}
}
Code: Selecteer alles
Voertuig (interface)
/
\
tandwielAangedreven (klasse) Auto (klasse)
/
\
Fiets (klasse) Go-cart (klasse)
Niet correct. Interfaces zijn veel meer dan alleen een kunstgreep. Ze zijn namelijk erg belangrijk als twee objecten met elkaar willen communceren en data doorgeven. In dat geval moet er vastgelegt worden hoe dit gebeurt, en daar komen interfaces om de hoek kijken.Uh, in mijn hoofd is een interface een kunstgreep om multiple inheritance mogelijk te maken bij talen die dat niet ondersteunen. Ik ben niet zo goed in de oo-terminologie dus meteen maar concreet: