Wat is interface-erfenis?
Overerving van interfaces is een mechanisme in bepaalde computertalen waarbij specifieke functies worden overgenomen door een klasse, en vervolgens moet die bepaalde klasse implementaties voor die functies bieden om volledig te zijn. Interfaces bestaan alleen in bepaalde objectgeoriënteerde programmeertalen. Ze kunnen worden gebruikt om meervoudige overerving na te bootsen, terwijl een klasse niet daadwerkelijk kan overerven, omdat er over het algemeen geen grenzen zijn aan het aantal interfaces waarvan een klasse kan erven. Naast niet-geïmplementeerde methoden kunnen interfaces ook openbare constanten bevatten.
Bij interface-overerving wordt het object dat methode-stubs en constanten overneemt beschouwd als een type interface-object. Dus als een klasse X geërfd van een interface Y, zou elke instantie van de klasse X ook een instantie van de klasse Y zijn. Dit wordt gecompliceerder wanneer de interface-overerving van een klasse meer dan één afzonderlijke interface omvat. Voor elke extra interface die wordt geërfd, kan de resulterende klasse legitiem worden gebruikt als een exemplaar van elk. Als een klasse van tien verschillende interfaces is geërfd, kunnen objecten van die klasse worden gebruikt als een instantie van elf verschillende objecten, inclusief zichzelf.
Een dergelijke complexe erfenis is niet vaak nodig. Interface-overerving wordt gebruikt om ervoor te zorgen dat een klasse een specifiek set van vereist gedrag heeft, en dit gedrag stelt het in staat een verscheidenheid aan functies uit te voeren die het anders niet zou kunnen doen. Een veel voorkomend voorbeeld hiervan is de ActionListener-interface in Java, waarvoor een klasse slechts één specifieke methode moet implementeren. Met een succesvolle implementatie van deze methode kan een gebruiker desgewenst knoppen, menu-items of andere vensterobjecten in de klasse bedienen. Overerving van interfaces is een relatief eenvoudige manier om complexe functionaliteit aan een klasse toe te voegen zonder zich zorgen te maken over de meest ingewikkelde overervingsproblemen.
Een van de grootste voordelen van het gebruik van interface-overerving is dat specifieke objecten in generieke zin kunnen worden gebruikt. Aangezien een klasse die een interface implementeert, een instantie van die interface is, kan deze op elke plaats worden gebruikt waar een instantie van die interface vereist is. Als klasse A bijvoorbeeld klasse C implementeert en klasse B ook klasse C implementeert, is een instantie van klasse A of een instantie van klasse B een methode als parameter een instantie van klasse C als een parameter. . Interfaces kunnen niet alleen worden geïnstantieerd omdat ze niet compleet zijn, dus er zou nooit een object zijn dat puur een instantie van klasse C als parameter was.