Gekoppeld aan de andere drie. Hier is deel 4 , zeer interessante dingen over Virtuele methoden in C# Dit is echt interessant spul (wel, ik denk dat het is!)...hier is een sectie over 'contracten' en virtuele methoden... het Java bit is zo waar!
Bill Venners: Wat bedoel je met inkomende en uitgaande contracten?
Anders Hejlsberg: Het inkomende contract is wat ik gebruik wanneer ik een methode noem. Het stelt me in staat om te redeneren over wat ik moet doen voordat ik bel in de methode en wat er gebeurd is nadat de methode terugkeert. Het uitgaande contract is wat ik gebruik wanneer ik een methode overschrijf. Als je kijkt naar de meeste API's zijn ze eigenlijk heel slecht in het documenteren van wat je moet doen wanneer je een virtuele methode overschrijft: Wat zijn de invarianten voordat je geroepen wordt? Wat moet waar zijn na? Welke methoden kun je niet bellen vanuit je implementatie? En ga zo maar door. Ik denk dat het erg gevaarlijk is om te zeggen dat standaard alle methoden zowel inkomende als uitgaande aspecten hebben. Het is gevaarlijk om iedereen te vertrouwen om goede documentatie te schrijven over wanneer te overschrijven en wat de invarianten zijn bij het bepalen.
Ik kan u een zeer echte wereld versiering probleem tonen, een die we inderdaad zien nu uit ervaring met Java. Wanneer ze verzenden een nieuwe versie van de Java klasse bibliotheken, breuk optreedt. Wanneer ze een nieuwe methode in een basisklasse introduceren, als iemand in een afgeleide klasse had een methode van dezelfde naam, die methode is nu een override . behalve als het een andere terugkeer type, het niet meer compileert. Het probleem is dat Java, en ook C++, niet de intentie van de programmeur met betrekking tot virtueel.
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.