Abstract en Interface !

Status
Niet open voor verdere reacties.

revelian

Gebruiker
Lid geworden
20 mrt 2007
Berichten
81
Hoi,


Kan iemand mij uitleggen (of een site met duidelijke uitleg) wat nou precies het verschil is tussen een abstracte class en een interface class. Ze zien er namelijk hetzelfde uit alleen moet je eentje overerven en de andere implementeren.

Ik denk dat ik dit nog niet helemaal goed snap .



Met vriendelijke groet,

Revelian
 
Het verschil is eigenlijk niet zo groot.
Een interface bepaalt dat een klasse die die interface implementeerd bepaalde methoden MOET hebben. Deze worden in de interface gedefinieerd. Een interface zal NOOIT code bevatten die die verplichte functies implementeert.
Een abstracte klasse KAN wel code bevatten die bepaalde methodes implementeert, maar bevat ook functies die niet geimplementeert zijn.
Je ziet bijv onder swing dat er een interface javax.swing.ListModel is, die deels uitgewerkt is in javax.swing.AbstractListModel die weer verder uitgewerkt wordt door javax.swing.DefaultListModel
Vaak die je dat abstracte klassen alvast wat werk voor je gedaan hebben en veel makkelijk bruikbare methoden hebben
 
abstract is wat abstracte klassen horen te doen in de standaard OO, een interface is een soort contract waaraan een klasse zich moet houden.
abstract gebruiken als het "is" bv: een wekkerradio is een wekker, dan is wekker de abstracte klasse en wekkerradio extend deze.
interface als het gedrag vertoont van bv: een wekkerradio kan een radio zijn, dan is radio de interface en wekkerradio implement deze.
 
Bedankt dropl en Murdocki ! :thumb:


Moest het een paar keer goed doorlezen. Weet nog steeds niet als ik het goed begrijp, maar om het voor mezelf even makkelijk te houden is het grootste verschil dus :

Een class die een interface implementeert MOET alle methodes gebruiken.

Een class die gebruik maakt van overerving hoeft niet gebruik te maken van alle methodes, maar de Super class kan wel methodes hebben geimplementeerd van een interface en daar MOET dan weer wel gebruik van worden gemaakt door de Sub-class.


Als dit goed is, dan ben ik weer wat verder :)


Zal meer moeten googlen hierover om het zodanig te begrijpen dat ik het zelf kan toepassen .
 
Laatst bewerkt:
bij een standaard overerving hoef je niet de methodes te overriden, tenzij ze in de abstracte klasse nog niet geimplementeerd zijn. implement je abstracte klasse een bepaalde interface dan betekent dat dat hij ze moet .. implementeren :P. als de abstracte klasse dat al doet dan hoeft de sub-klasse dat niet meer te doen, je moet zelf even kijken of je ook in een abstracte klasse een interface kan implementen enkel door de methodes opnieuw te declareren, dan moet de sub-klasse ze wel weer implementeren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan