Ga naar inhoud

Meervoudige klasse overerving in VB.NET 2003


Aanbevolen berichten

In de help file van VB.NET 2003 wordt gemeld dat het in principe niet mogelijk is een klasse te laten overerven uit meer dan een andere klasse, maar dat dit dan met 'interfaces' wel kan. Ik krijg het met het volgende voorbeeld ook met Interfaces niet voor elkaar. Men neme als voorbeeld een klasse Pegasus, afgeleid van de klassen Zwaan (die kan Vliegen en ElegantSterven) en Paard (die kan Hinniken). De nieuwe klasse overerft dan de methoden Vliegen en Hinniken. In C++ is dit een koud kunstje. Maar hoe gaat dat in VB.NET? Iemand een idee? Bij voorbaat dank, Th
Link naar reactie
De vraag is natuurlijk of een pegasus een paard is met eigenschappen van een vogel, of een vogel is met eigenschappen van een paard. Krijg je ook het probleem of een pegasus eieren legt of niet en of het pegasus-veulens zoogt of niet. Ik heb me erg weinig met VB.NET bezig gehouden en in principe is OO binnen VB nog vrij onbekend. Maar goed, handboekje erbij en even kijken hoe het moet... Het is eigenlijk maf dat het boek "Visual Basic.NET step by step" dat ik bij mijn VB versie kreeg het onderwerp interface niet eens kent... We beginnen met een interface voor paard:[code:1:6355bd6a63]Public Interface Paard Sub Hinniken() End Interface[/code:1:6355bd6a63] En een interface voor een zwaan:[code:1:6355bd6a63]Public Interface Zwaan sub Vliegen() sub ElegantSterven() End Interface[/code:1:6355bd6a63] Nu zou je dus je class Pegasus kunnen maken:[code:1:6355bd6a63]Public Class Pegasus Implements Paard Implements Zwaan Public Overridable Sub Hinniken() End Sub Public Overridable sub Vliegen() End Sub Public Overridable sub ElegantSterven() End Sub End Class[/code:1:6355bd6a63] En ja, daar heb je nu dus ook een probleem. Als je ook een [b:6355bd6a63]class[/b:6355bd6a63] Paard gebruikt dan heb je dus ook twee keer de routine "Hinniken" moeten schrijven, en waarschijnlijk dus dat je code moet herhalen... Wat dat betreft vind ik Delphi prettiger werken omdat Delphi net als VB geen multiple inheritance toestaat maar je kunt in Delphi een class opnemen als een property en vervolgens zeggen dat deze class alle methodes implementeert van een bepaalde interface. Door-delegeren dus. Ik heb bovenstaande code overigens niet getest, alleen overgetypt uit een boek. :oops:
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...