Operativsystem: .............................................................
Operativsystem: .............................................................
Operativsystem: .............................................................
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Interfaces – en anden slags arv:<br />
Et interface erklæres som en klasse, men indeholder kun abstrakte metoder (inklusive properties,<br />
indexers og events – som alle opfattes som en slags metoder). Et interface kan IKKE indeholde<br />
felter!<br />
public interface IBog {<br />
}<br />
//properties:<br />
string Forfatter{get;set;}<br />
string Titel{get;set;}<br />
int Sider{get;set;}<br />
//en abstrakt metode:<br />
void vis_bog();<br />
En klasse kan implementere et interface hvilket betyder at den har ’pligt’ til at definere de metoder<br />
og properties som er indeholdt i dette interface. En abstract klasse kan indeholde metoder som er<br />
defineret og implementeret, men et interface kan kun rumme ikke-implementerede medlemmer!!<br />
Bortset herfra minder abstrakte klasser om interfaces!<br />
På en vis måde ’arver’ klassen fra dette interface. I en vis forstand kan man opfatte et interface som<br />
en basisklasse. Hvis klassen Ejerlejlighed implementerer et interface ILejlighed kan man sige at<br />
en ejerlejlighed ’er’ en lejlighed!<br />
Et ’interface’ (en grænseflade til verden uden om) er egentligt de metoder osv som klassen stiller<br />
til rådighed for ’den ydre verden’ eller andre objekter eller ’klienten’. (Sådan fungerer interfaces<br />
typisk i Windows COM objekter). Jvf begrebet GUI – grafisk user interface! Alle medlemmer af et<br />
interface er derfor public – logisk nok.<br />
Ved at bruge interfaces kan man igen sikre et logisk hierarki. Hvis man vil designe et system – kan<br />
man meget logisk starte med at definere en række interfaces – systemets ’skelet’!<br />
En klasse kan både arve fra en basisklasse og implementere et eller evt mange interfaces. (I selve<br />
kode notationen: class X:Y{} kan man faktisk IKKE se om Y er en basisklasse eller et interface!!).<br />
En klasse kan implementere to interfaces som har den ’samme’ metode (dvs signaturen er ens:<br />
samme navn, samme returtype, samme parametre!) – fx således:<br />
public interface IKlasser{ string vis(); }<br />
public interface IObjekter{ string vis(); }<br />
I klassen kan man så skelne mellem de to implementeringer ved at skrive ’den fulde sti’:<br />
IKlasser.vis(){...}