Volledige versie bekijken : Vraag ivm gebruik van Interfaces
xWouterx
%Europe/Berlin %379 %2008, 10:06
Mss een domme vraag... Maar waarom moeten classes die een Interface implementeren de verplichte methodes als public zetten? :#
Mr. Black
%Europe/Berlin %407 %2008, 10:47
Anders zou je er natuurlijk weinig aan hebben. :)
In een interface staan een aantal (public) functions genoemd. De class die deze interface implementeert, moet deze functies dan ook zelf hebben. Dat is bijzonder handig als je meerdere classes hebt die de interface implementeren.
Je hebt bijvoorbeeld een IItem interface (met de methods showContent en hideContent). Vervolgens maak je een SimpleItem class aan en een ModernItem class aan. Deze implementeren beide de IItem interface. Ze hebben dus ook allebei een showContent en hideContent method. Iedere class doet dat natuurlijk op zijn eigen manier. SimpleItem gaat met een alpha tween, ModernItem met een flits. Maar ze hebben i.i.g. de functies.
Nu is het handige dat je ze als gelijke kan behandelen. Stel je hebt een Array met een aantal SimpleItems en een aantal ModernItems. Je wilt nu dat ze allemaal showContent uitvoeren. Als je geen interface hebt, wordt dit lelijk. Je moet er dan Objecten van maken en dan maar gokken dat die de method hebben:
var arr:Array = [ new SimpleItem(), new ModernItem(), new SimpleItem(), new ModernItem() ];
for each ( var object:Object in arr )
{
object.showContent();
}
Erg lelijk en Errorgevoelig. Beter is natuurlijk dit:
var arr:Array = [ new SimpleItem(), new ModernItem(), new SimpleItem(), new ModernItem() ];
for each ( var item:IItem in arr )
{
item.showContent();
}
Als je bepaalde verplichte methods private zou maken, zou dit natuurlijk niet mogelijk zijn. Dan is het nog steeds gokken of de method wel bestaat (public is).
De interface is dus vooral handig als je classes van buitenaf benadert. Je weet dan welke functies er i.i.g. inzitten. Als je sommige private zou mogen maken, kan je dat niet meer zeker weten. Daarom beschrijf je in een interface ook alleen maar de public methods.
Succes nog! :)
xWouterx
%Europe/Berlin %449 %2008, 11:47
ah ok... het nut (grotendeels) en de werking ervan snapte ik... alleen snapte ik niet goed waarom nu juist public, maar door jouw uitleg ben ik volledig mee :D
Dank je
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.